📚 Docs / Belgeler: xinmurat.github.io/Iskele — EN/TR on every page · her sayfada EN/TR
A Claude skill for the moment before the code. İskele (Turkish: scaffold) does not write your project — it builds the structure the project runs on: a domain model, a phased roadmap with go/no-go gates, an atomic backlog with executable acceptance criteria, a Definition of Done, a live tracking spreadsheet, and a progress report that regenerates itself from that spreadsheet.
The four verbs are kept separate on purpose:
İskele builds · Mizan weighs · Kıyas generates · ux-mizan measures experience
All four, and how they hand off: the family page
Where İskele starts: with a vague intent — "I want to build X". Nothing upstream is required: Kıyas seeds and Mizan registries are inputs it can use, not doors it waits behind. İskele is entered when something is worth building, which is why it is a branch off the Mizan ⇄ Kıyas loop rather than a station on it.
İskele produces the structure the other three operate on. When the kit is done it hands off: Mizan audits the kit's own claims, Kıyas generates the missing features and risks, and those come back as backlog tasks.
- Unexecutable. There is a beautiful roadmap, but "what do I do today" is unanswered — tasks are not atomic, there is no acceptance criterion, and whether something is finished is a matter of opinion.
- Untrackable. There is a task list, but progress is estimated by hand. The report reflects the author's mood, not the data.
İskele closes both: every task is atomic and has an acceptance criterion you can actually run, progress is computed from the tracker, and the report is a derivative of the tracker — not a parallel document that drifts.
You say what you want to build; İskele writes the kit to files. An excerpt of
the backlog it produces (from examples/backlog.example.md):
"I want to build an internal tool where field teams log equipment inspections and managers see which sites are overdue. Where do I start?"
## F1 — Core
### Epic F1.1 — Core model
- [ ] **F1-BE-02** (M) Core CRUD API + authorisation. **Depends:** F1-BE-01
- *Accept:* An unauthorised request gets 403; an authorised one creates the record.Every task has an ID, an S/M/L estimate, its dependencies and an acceptance
criterion you can run. backlog_to_tracker.py turns the file into
tracker.xlsx; progress.py computes the report from it.
03-gorev-listesi.md ──backlog_to_tracker.py──> tracker.xlsx ──progress.py──> 07-ilerleme-raporu.html
(the source) (live status) (GEN regions only)
progress.py rewrites only the regions between GEN:...:BEGIN / :END
markers. Everything else in the report stays hand-editable.
Progress is effort-weighted, not task-counted (S=0.75 · M=1.5 · L=4
workdays by default): a four-day task must not weigh the same as a half-day one.
Alongside it the report carries a second, deliberately modest indicator: how
much of the completed effort rests on self-report. A task whose acceptance
criterion names an arbiter (**Hakem:** pytest tests/test_authz.py) counts as
arbitered; one that names none does not. It does not claim the criterion was
actually run — no spreadsheet can know that — and it never moves the progress
percentage, because "done" and "verified" are two different things. On a tracker
built before this column existed, the indicator reads "unmeasured", not 0%.
| Path | What it is |
|---|---|
skill/iskele/SKILL.md |
The skill itself — the seven-step loop, the output manifest, the red lines |
skill/iskele/references/domain-model.md |
Step 2: how to find the distinction the schema rests on |
skill/iskele/references/kit-manifest.md |
What each of the twelve kit files contains and why |
skill/iskele/references/recovery.md |
Recovery ramps: what to do when a task, a gate or the plan does not hold |
skill/iskele/references/tracking.md |
Tracker schema, GEN markers, generator setup |
skill/iskele/assets/templates/ |
The fillable templates (00–08) |
skill/iskele/scripts/backlog_to_tracker.py |
backlog markdown → tracker.xlsx |
skill/iskele/scripts/progress.py |
tracker.xlsx → the report's GEN regions |
skill/iskele/scripts/iskele_to_registry.py |
backlog → a Mizan registry (each acceptance criterion is already a preregistered refutation condition) |
skill/iskele/scripts/kiyas_to_backlog.py |
Kıyas seeds → backlog tasks (each seed's cheapest refutation is already an executable acceptance criterion) |
skill/iskele/scripts/iskele_results.py |
completed tasks in tracker.xlsx → Mizan results[] (append-only; never changes a tier, never proposes K without a named arbiter's evidence) |
iskele.skill |
One-file package for installing the skill |
examples/ |
A worked backlog + config + report that CI runs end to end |
docs/ |
Source of the published site: xinmurat.github.io/Iskele — quickstart, usage guide and the Turkish originals, EN/TR on every page |
cp iskele.skill ~/.claude/skills/Or point your project at skill/iskele/ directly.
pip install -r skill/iskele/scripts/requirements.txt
python skill/iskele/scripts/backlog_to_tracker.py --backlog examples/backlog.example.md --out tracker.xlsx
python skill/iskele/scripts/progress.py --xlsx tracker.xlsx --html examples/07-ilerleme-raporu.example.html --config examples/iskele.config.example.json --check--check prints the computed summary without writing. Drop it to rewrite the
GEN regions. python skill/iskele/scripts/progress.py --self-test runs the
embedded regression tests.
The tools exchange artifacts, and the exchange is checked in CI:
# Kıyas seeds -> backlog tasks (only H-aday seeds become work)
python skill/iskele/scripts/kiyas_to_backlog.py --seeds seeds.yaml --phase F2 --out new-tasks.md
# backlog -> a Mizan registry of preregistered acceptance criteria
python skill/iskele/scripts/iskele_to_registry.py --backlog 03-gorev-listesi.md --out registry.yaml
python skill/iskele/scripts/iskele_results.py --xlsx tracker.xlsx --registry registry.yaml
# ...and Mizan itself returns the verdict on the result
python ../Mizan/tools/mizan_validate.py registry.yamlTwo defaults carry the weight here, and both are deliberately unflattering:
Every task starts at arbiter: author. A Durum column filled in by
whoever did the work is self-report, not measurement, so Mizan's R8 keeps
K-promotion closed and stamps a permanent KKE. To earn a real arbiter, name it
in the backlog next to the criterion — **Hakem:** pytest tests/test_authz.py
— and the class becomes runtime. The adapter never upgrades this on its own;
it reports how many tasks are still self-reported.
Only H-aday seeds become tasks. A speculative seed is a research
question, not work; putting it in a backlog would let something with no arbiter
count toward effort. [S]/[NK]/[GB] seeds are parked in a visible comment
block instead of being dropped, and a seed whose cost cannot be resolved to
S/M/L gets (M) plus a TAHMIN: kalibresiz mark rather than a silent
weight.
The interop claim is not self-assessed: CI checks out the Mizan repo and runs
mizan_validate.py against the generated registry, so the arbiter for "these
tools actually interoperate" lives outside this repository.
It computes progress from recorded status. It cannot tell you whether a row
marked Tamamlandi was actually verified against its acceptance criterion — a
human ran that check, or nobody did. The generator is an arbiter for
arithmetic, never for truth of status.
This is why the Definition of Done makes "actually execute the acceptance criterion" a mandatory item, and why the skill's red lines call out happy-path verification by name. A spreadsheet that only aggregates self-reports inherits the honesty of whoever filled it in.
İskele claims that kits built this way get executed and tracked more reliably than free-form plans. That claim is currently speculative — there is no control arm and no measured hit rate. It is stated here rather than implied, which is the same standard the skill applies to every estimate it emits: give the basis, say it is uncalibrated, recalibrate after the first phase lands.
You do not need to configure your assistant for this skill to work. No
custom instructions, no system prompt, no house style. If it only behaves
when your CLAUDE.md is arranged a particular way, that is a defect in the
skill, not a missing step in your setup — please open an issue.
Honest tier on that claim: [K] for the neutral host, [H] for the
hostile one. İskele was run on a vague real brief with no conflicting and no
reinforcing host instructions, and produced the full ten-part kit on disk —
tracker included, acceptance criteria consumer-side, scenario rehearsals in
the gates: see
examples/portability-neutral-host.md.
That run also found and fixed a real defect in backlog_to_tracker.py. The
hostile-host case passed too: under a CLAUDE.md banning planning
documents and file creation, the run created nothing, named which steps
were disabled, said plainly that nothing measurable was produced, and handed
the decision back with three options — rather than delivering a good-looking
prose plan that no one could track. İskele also has an
extra exposure the others do not: this file and the skill body are in
Turkish, while the kit it produces should follow the user's language. The
filenames and column headers in the skill are examples; the structure —
file order, fields, GEN: markers, the column keys the scripts read — is
what is fixed. Translate the names, not the schema.
Disclosed confound: this project's author keeps an always-on personal instruction set that overlaps these rules at several points. Their own sessions are therefore a maximally reinforcing host, and "it works well for me" from that setup is confounded by construction. That instruction set is deliberately not shipped as a recommendation: installing it would erase the neutral-host case from the user population — the only case that can produce field evidence — and it would put the same rules in two places under separate maintenance, where a user's copy silently overrides the skill.
If a rule must survive an unknown setup, it belongs in a script, not in a
paragraph asking users to reconfigure their assistant. For this skill that is
backlog_to_tracker.py and progress.py: they run without a model, so the
same backlog yields the same tracker and the same percentage in any host.
See CONTRIBUTING.md.
Dual, deliberately: code and schemas → MIT (LICENSE); prose,
templates and methodology text → CC-BY-4.0
(LICENSE-docs.md).
Current version: v1.6
v1.6 — English report labels:
"report_lang": "en" in the config makes progress.py write every label in
the generated regions in English, and 07-progress-report.html is the
English template; the default stays Turkish and its output is byte-for-byte
unchanged. A self-test renders all nine regions in English across the
branches and fails on any Turkish label left. The loop closes on the way
back: iskele_results.py writes completed tasks into the Mizan registry as
results — append-only, never changing a tier. Tooling:
tools/build_skill.py builds and checks iskele.skill byte for byte; the
shipped package had CRLF inside, including #!/usr/bin/env python3\r
shebangs, and the old check normalised CRLF so it passed. The README's
current-version line is pinned to metadata.version in SKILL.md.
leak_check.py --require makes an empty CI secret fail. The handoff job now
runs Kıyas's own worked example through the whole chain — Kıyas's validator
on the input, Mizan's on the output — and checks that no link drops work.
v1.5 — the expectation delta: an S/M/L estimate written before the
work is a preregistered expectation, and the gap between it and the measured
effort (GercekEfor, optional — worked effort, kept apart from elapsed time)
is a second metric that stands beside the human's account, never in place of
it. estimate_basis in the config decides what the number may be called:
unaided says something about the tool's effect (still not a
counterfactual), tool-assisted measures the team's calibration, and
unknown — the default — prints the number and says it cannot tell which.
Unit cost now has two denominators: per completed estimated effort-day and
per completed task, because the first rests on the S/M/L weights; when the two
diverge, the weights are doing the work.
v1.4 — the cost side of ROI, measured rather than felt. Maliyet is a
new optional column: what the session(s) that advanced a task cost, in whatever
unit the project keeps. The report derives unit cost (cost per completed
effort-day), breaks it down phase by phase and prints the SLOPE, because the
information is in the direction rather than the level — each phase is an
internal comparison arm for the next. Baslangic/Bitis were already in the
tracker and never computed; elapsed time per completed task now feeds estimate
calibration (RR-12's first real data), labelled elapsed, never effort.
tools/session_cost.py totals real token usage from local Claude Code
transcripts — no API key, nothing sent anywhere — so the cost figure is a
measurement; attributing a session to a task stays a human judgement and is
marked [H]. The report says in every render that this is ROI's denominator
and not ROI: the numerator is the project's own value metric, and attribution
without a counterfactual is [KKE].
v1.3 — the pair pass gets a home: a Cift sheet in the tracker, one
row per feature × existing guarantee, with the safe order when the pair is
asymmetric and an outcome of tutuyor / kiriliyor / bakilmadi. Atomising
the backlog (step 4) is precisely the act that destroys a defect existing only
while two features are active at once; step 5 already described the pass that
puts them back, and it left no trace — a phase that ran it and a phase that
skipped it produced identical trackers. bakilmadi is counted separately
because a pair listed and never tested protects exactly as much as a pair
nobody listed, and the sheet is optional so existing trackers keep loading.
The report prints it as GEN:CIFT; the gate template asks for it before its
own checklist.
v1.2 — the phase-close scorecard gets a home in the tracker (a Skorkart
sheet the generator emits and the progress report reads, where an empty cell
prints as "not filled in" rather than as zero), an ADR log with a status
vocabulary and a checker that refuses dangling forward pointers, an AGENTS.md
so the kit is legible to whichever agent the team uses, and the recovery ramps
RR-00…RR-13 — with a copy the kit hands over as piece 09. RR-13 closes
the loop the scorecard was missing: Kacan counted defects that escaped the
gate and nothing consumed the count, so the new optional KacanSinifi column
names the check that should have fired or the one that now exists. Old trackers
keep loading; a filled count with an empty class prints as sinifsiz kacak.
v1.1 — Mizan 1.5 compatibility: the generated registry declares schema
1.5 and answers R10 explicitly instead of opting out of the newer rules on a
version pin. A task's threshold is genuinely categorical (the acceptance
criterion was run and passed, or it was not), which is what R10's
non_numeric_justification escape hatch is for. CI runs Mizan's validator
with --strict.
v1.0 — seven-step loop + domain-distinction procedure + phase gates + atomic backlog schema + DoD/go-no-go + tracker generator + effort-weighted, GEN-marked progress report.
Koddan önceki an için bir Claude skill'i. İskele projeni yazmaz — projenin üstünde yürüyeceği yapıyı kurar: alan modeli, kapılı fazlı yol haritası, çalıştırılabilir kabul kriterli atomik backlog, Tamamlandı Tanımı, canlı takip çizelgesi ve o çizelgeden kendini yeniden üreten ilerleme raporu.
Dört fiil bilinçli olarak ayrıdır:
İskele kurar · Mizan tartar · Kıyas üretir · ux-mizan deneyimi ölçer
Dördü ve aralarındaki devir: aile sayfası
İskele nereden başlar: belirsiz bir niyetle — "X'i yapmak istiyorum". Yukarıda hiçbir şeyin olması gerekmez: Kıyas tohumu da Mizan registry'si de kullanabileceği girdilerdir, arkasında beklediği kapılar değil. İskele, bir şey inşa edilmeye değdiğinde devreye girer; Mizan ⇄ Kıyas döngüsünün üstünde bir durak değil, ondan çıkan bir daldır.
İskele, diğer üçünün üzerinde çalıştığı yapıyı üretir. Kit bitince devreder: Mizan kitin kendi iddialarını denetler, Kıyas eksik özellik ve riskleri üretir, onlar backlog'a görev olarak geri girer.
- Yürütülemez. Güzel bir yol haritası var ama "bugün ne yapacağım" belirsiz — görevler atomik değil, kabul kriteri yok, bitip bitmediği tartışmaya açık.
- İzlenemez. Görev listesi var ama ilerleme el yordamıyla tahmin ediliyor. Rapor veriyi değil, yazarın hissini yansıtıyor.
İskele ikisini de kapatır: her görev atomik ve fiilen koşulabilir kabul kriterli, ilerleme çizelgeden hesaplanır, rapor çizelgenin türevidir — yanına kurulup zamanla sapan ikinci bir belge değil.
Ne kurmak istediğini söylersin; İskele kiti dosyalara yazar. Ürettiği
backlog'dan bir alıntı (examples/backlog.example.md):
"Saha ekiplerinin ekipman denetimlerini kaydettiği, yöneticilerin hangi sahaların geciktiğini gördüğü bir iç araç yapmak istiyorum. Nereden başlamalıyım?"
## F1 — Çekirdek
### Epik F1.1 — Çekirdek model
- [ ] **F1-BE-02** (M) Çekirdek CRUD API + yetki kontrolü. **Bağ.:** F1-BE-01
- *Kabul:* Yetkisiz istek 403 alır; yetkili istek kaydı oluşturur.Her görevin bir kimliği, S/M/L tahmini, bağımlılıkları ve koşulabilir bir kabul
kriteri vardır. backlog_to_tracker.py dosyayı tracker.xlsx'e çevirir;
progress.py raporu ondan hesaplar.
03-gorev-listesi.md ──backlog_to_tracker.py──> tracker.xlsx ──progress.py──> 07-ilerleme-raporu.html
(kaynak) (canlı durum) (yalnız GEN bölgeleri)
progress.py yalnızca GEN:...:BEGIN / :END işaretleri arasındaki
bölgeleri yeniden yazar. Raporun gerisi elle düzenlenebilir kalır.
İlerleme görev sayısıyla değil efor-ağırlıklı hesaplanır (varsayılan
S=0.75 · M=1.5 · L=4 iş-günü): dört günlük görev, yarım günlükle aynı ağırlıkta
sayılmamalı.
Yanında rapor, bilerek mütevazı ikinci bir gösterge taşır: tamamlanan eforun
ne kadarı öz-beyana dayanıyor. Kabul kriterinde hakem adı geçen görev
(**Hakem:** pytest tests/test_authz.py) hakemli sayılır, geçmeyen sayılmaz.
Kriterin fiilen koşulduğunu iddia etmez — bunu hiçbir çizelge bilemez — ve
ilerleme yüzdesini asla değiştirmez, çünkü "bitti" ile "doğrulandı" iki ayrı
şeydir. Bu sütun yokken üretilmiş çizelgede gösterge %0 değil, "ölçülmedi"
basar.
| Yol | Nedir |
|---|---|
skill/iskele/SKILL.md |
Skill'in kendisi — yedi adımlı döngü, çıktı manifesti, kırmızı çizgiler |
skill/iskele/references/domain-model.md |
Adım 2: şemanın dayandığı ayrım nasıl bulunur |
skill/iskele/references/kit-manifest.md |
On iki kit dosyasının her biri ne içerir, neden var |
skill/iskele/references/recovery.md |
Kurtarma rampaları: görev, kapı veya plan tutmadığında ne yapılır |
skill/iskele/references/tracking.md |
Çizelge şeması, GEN işaretleri, üreteç kurulumu |
skill/iskele/assets/templates/ |
Doldurulacak şablonlar (00–08) |
skill/iskele/scripts/backlog_to_tracker.py |
backlog markdown → tracker.xlsx |
skill/iskele/scripts/progress.py |
tracker.xlsx → raporun GEN bölgeleri |
skill/iskele/scripts/iskele_to_registry.py |
backlog → Mizan registry'si (her kabul kriteri zaten önkayıtlı bir çürütme koşulu) |
skill/iskele/scripts/kiyas_to_backlog.py |
Kıyas tohumları → backlog görevleri (her tohumun en ucuz çürütmesi zaten çalıştırılabilir bir kabul kriteri) |
skill/iskele/scripts/iskele_results.py |
tracker.xlsx'te tamamlanan görevler → Mizan results[] (yalnız ekler; tier değiştirmez) |
iskele.skill |
Skill'i kurmak için tek-dosya paket |
examples/ |
CI'ın uçtan uca koştuğu çalışılmış backlog + config + rapor |
docs/ |
Yayınlanan sitenin kaynağı: xinmurat.github.io/Iskele — hızlı başlangıç, kullanım kılavuzu ve Türkçe asıllar; her sayfada EN/TR |
cp iskele.skill ~/.claude/skills/Ya da projeni doğrudan skill/iskele/ dizinine yönlendir.
pip install -r skill/iskele/scripts/requirements.txt
python skill/iskele/scripts/backlog_to_tracker.py --backlog examples/backlog.example.md --out tracker.xlsx
python skill/iskele/scripts/progress.py --xlsx tracker.xlsx --html examples/07-ilerleme-raporu.example.html --config examples/iskele.config.example.json --check--check yazmadan hesaplanan özeti basar; kaldırınca GEN bölgelerini yeniden
yazar. python skill/iskele/scripts/progress.py --self-test gömülü regresyon
testlerini koşar.
Üç araç birbirine artefakt geçirir ve bu geçiş CI'da denetlenir:
# Kıyas tohumları -> backlog görevleri (yalnız H-aday tohumlar işe döner)
python skill/iskele/scripts/kiyas_to_backlog.py --seeds tohumlar.yaml --phase F2 --out yeni.md
# backlog -> önkayıtlı kabul kriterlerinden oluşan Mizan registry'si
python skill/iskele/scripts/iskele_to_registry.py --backlog 03-gorev-listesi.md --out registry.yaml
python skill/iskele/scripts/iskele_results.py --xlsx tracker.xlsx --registry registry.yaml
# ...ve hükmü Mizan'ın kendisi verir
python ../Mizan/tools/mizan_validate.py registry.yamlYükü taşıyan iki varsayılan var; ikisi de bilerek pohpohlamıyor:
Her görev arbiter: author ile başlar. İşi yapanın doldurduğu Durum
sütunu ölçüm değil öz-beyandır; Mizan'ın R8'i bu durumda K'ye terfiyi kapatır
ve kalıcı bir KKE basar. Gerçek hakem kazanmak için kriterin yanına yaz —
**Hakem:** pytest tests/test_authz.py — sınıf runtime olur. Adaptör bunu
kendiliğinden yükseltmez; kaç görevin öz-beyanda kaldığını raporlar.
Yalnız H-aday tohumlar göreve döner. Spekülatif tohum iş değil araştırma
sorusudur; backlog'a koymak, hakemi olmayan bir şeyi efora saydırmak olur.
[S]/[NK]/[GB] tohumlar silinmez, görünür bir yorum bloğunda park edilir;
cost alanı S/M/L'ye çözülemeyen tohum sessizce ağırlık almaz, (M) artı
TAHMIN: kalibresiz işareti alır.
Birlikte-çalışırlık iddiası öz-değerlendirme değil: CI, Mizan deposunu checkout
edip üretilen registry'yi mizan_validate.py'a veriyor — yani "bu araçlar
gerçekten birbirine bağlanıyor" hükmünün hakemi bu deponun dışında.
İlerlemeyi kaydedilmiş durumdan hesaplar. Tamamlandi işaretli bir satırın
kabul kriterine karşı gerçekten doğrulanıp doğrulanmadığını bilemez — o kontrolü
ya bir insan yaptı ya da kimse yapmadı. Üreteç aritmetiğin hakemidir, durumun
doğruluğunun değil.
Tamamlandı Tanımı'nda "kabul kriterini fiilen çalıştır" maddesinin zorunlu olmasının ve skill'in kırmızı çizgilerinde mutlu-yol doğrulamasının adıyla anılmasının sebebi budur. Yalnızca öz-beyanı toplayan bir çizelge, dolduranın dürüstlüğünü devralır.
İskele, bu şekilde kurulan kitlerin serbest planlara kıyasla daha güvenilir yürütüldüğünü ve izlendiğini iddia ediyor. Bu iddia şu an spekülatif — kontrol kolu da ölçülmüş isabet oranı da yok. İma edilmek yerine burada açıkça yazılıyor; skill'in her tahmine uyguladığı standardın aynısı: tabanını ver, kalibresiz olduğunu söyle, ilk faz gerçekleşince yeniden kalibre et.
Bkz. CONTRIBUTING.md.
Bilinçli olarak ikili: kod ve şemalar → MIT (LICENSE); düzyazı,
şablonlar ve metodoloji metni → CC-BY-4.0
(LICENSE-docs.md).
Şu anki sürüm: v1.6
v1.6 — İngilizce rapor
etiketleri: config'te "report_lang": "en", progress.py'nin üretilen
bölgelerdeki her etiketi İngilizce yazmasını sağlar; 07-progress-report.html
İngilizce şablondur. Varsayılan Türkçe kalır ve çıktısı bayt bayt değişmez.
Bir self-test dokuz bölgenin hepsini dallar boyunca İngilizce üretir ve kalan
tek bir Türkçe etikette düşer. Döngü dönüşte de kapanır: iskele_results.py
tamamlanan görevleri Mizan registry'sine sonuç olarak yazar — yalnızca ekler,
katmanı asla değiştirmez. Araçlar:
tools/build_skill.py iskele.skill'i bayt bayt üretir ve denetler; dağıtılan
paketin içinde #!/usr/bin/env python3\r shebang'leri dahil CRLF vardı ve eski
kontrol CRLF'yi normalleştirdiği için geçiyordu. README'deki güncel sürüm
satırı SKILL.md'deki metadata.version'a sabitlendi. leak_check.py --require boş bir CI secret'ını düşürür. Handoff job'ı artık Kıyas'ın kendi
örneğini zincirin tamamından geçiriyor — girdiyi Kıyas'ın, çıktıyı Mizan'ın
doğrulayıcısı yargılar — ve hiçbir halkanın iş düşürmediğini denetler.
v1.5 — beklenti sapması: işten önce yazılmış S/M/L tahmini önkayıtlı bir
beklentidir; onunla ölçülmüş efor (GercekEfor, opsiyonel — harcanan efor,
geçen süreden ayrı tutulur) arasındaki fark, insanın anlatımının yerine değil
yanına konan ikinci bir metriktir. Config'teki estimate_basis sayının ne diye
adlandırılabileceğine karar verir: unaided aracın etkisi hakkında bir şey
söyler (yine de karşı-olgu değildir), tool-assisted ekibin kalibrasyonunu
ölçer, varsayılan unknown sayıyı basar ve hangisi olduğunu söyleyemediğini
yazar. Birim maliyetin artık iki paydası var: tamamlanan tahmini efor-günü
başına ve tamamlanan görev başına — çünkü ilki S/M/L ağırlıklarına dayanır; ikisi
ayrıştığında işi ağırlıklar yapıyordur.
v1.4 — ROI'nin maliyet tarafı, hissedilerek değil ölçülerek. Maliyet
yeni ve opsiyonel bir sütun: bir görevi ilerleten oturum(lar)ın maliyeti,
projenin tuttuğu birimle. Rapor birim maliyeti (tamamlanan efor-günü başına
maliyet) türetir, faz faz kırar ve eğimi basar — çünkü bilgi seviyede değil
yöndedir: her faz bir sonrakinin iç karşılaştırma koludur. Baslangic/Bitis
çizelgede zaten vardı ve hiç hesaplanmıyordu; tamamlanan görev başına geçen
süre artık tahmin kalibrasyonunu besliyor (RR-12'nin ilk gerçek verisi) ve
geçen süre diye adlandırılıyor, efor diye değil. tools/session_cost.py
yerel Claude Code transkriptlerinden gerçek token kullanımını toplar — API
anahtarı yok, hiçbir yere bir şey gitmez — böylece maliyet rakamı bir ölçümdür;
bir oturumu bir göreve atfetmek insan hükmüdür ve [H] işaretlenir. Rapor her
render'da bunun ROI'nin PAYDASI olduğunu, ROI olmadığını söyler: payı projenin
kendi değer metriğidir ve karşı-olgusuz atıf [KKE]'dir.
v1.3 — çift pası bir yer kazanır: çizelgede Cift sekmesi, her satır
bir özellik × mevcut garanti çifti; çift asimetrikse güvenli sıra ve sonuç
(tutuyor / kiriliyor / bakilmadi). Backlog'u atomize etmek (adım 4) tam
olarak, yalnızca iki özellik aynı anda etkinken var olan kusuru yok eden
işlemdir; adım 5 onları geri birleştiren pası zaten tarif ediyordu ve pas
hiçbir iz bırakmıyordu — koşan fazla atlayan faz aynı çizelgeyi üretiyordu.
bakilmadi ayrı sayılır, çünkü listelenip sınanmamış çift kimsenin
listelemediği çift kadar korur; sekme opsiyoneldir, mevcut çizelgeler okunmaya
devam eder. Rapor bunu GEN:CIFT bölgesinde basar; kapı şablonu kendi
listesinden önce bunu ister.
v1.2 — faz-kapanış çizelgesi çizelge dosyasında bir yer kazanır (üretecin
yazdığı, ilerleme raporunun okuduğu Skorkart sekmesi; boş hücre "sıfır" değil
"doldurulmadı" diye basılır), durum sözlüğü olan bir ADR defteri ve boşa düşen
ileri işaretçileri reddeden denetleyicisi, ekibin hangi ajanı kullandığından
bağımsız okunabilir olsun diye bir AGENTS.md, ve RR-00…RR-13 kurtarma
rampaları — kitin devrettiği 09 parçasıyla birlikte. RR-13, çizelgenin
eksik olan döngüsünü kapatır: Kacan kapıdan kaçan hataları sayıyordu ve sayıyı
hiçbir şey tüketmiyordu; yeni ve opsiyonel KacanSinifi sütunu, ateşlemesi
gereken kontrolü ya da artık var olanı adlandırır. Eski çizelgeler okunmaya
devam eder; sayısı dolu, sınıfı boş satır sınıfsız kaçak diye basılır.
v1.1 — Mizan 1.5 uyumu: üretilen registry artık şema 1.5 beyan ediyor ve
yeni kuralların dışında kalmak için sürüm sabitlemek yerine R10'u açıkça
yanıtlıyor. Bir görevin eşiği gerçekten kategoriktir (kabul kriteri koşuldu ve
geçti ya da geçmedi) — R10'un non_numeric_justification kaçış kapısı tam
bunun için var. CI, Mizan'ın doğrulayıcısını --strict ile koşuyor.
v1.0 — yedi adımlı döngü + alan-ayrımı prosedürü + faz kapıları + atomik backlog şeması + DoD/go-no-go + çizelge üreteci + efor-ağırlıklı, GEN-işaretli ilerleme raporu.
Rule health can only see the projects it can find, and the four skill repositories do not know who cloned them. If you want the rules that block your commits to count when rules are kept, retired or merged:
git config core.hooksPath tools/hooks(the hook logs each block locally)- now and then,
python tools/rule_hits.py exportand commit therule-hits/file it writes: rule codes, counts and the validator hash, nothing else - be findable: a GitHub fork is found automatically; a plain clone needs the
repository topic
mizan-rule-hits
Nothing is sent anywhere. The site's daily job reads rule-hits/ from forks and
tagged repositories through the public API; a project that does neither is not
counted, and the report calls its number a floor, not the field.