| Country | Contributions | Between | Climbers | Crags | Summits | Climbs | Ascents | |
|---|---|---|---|---|---|---|---|---|
| 1 | USA | 1507 | 20th November 2025 – 30th June 2026 | 47 | 20 | 0 | 87 | 97 |
| 2 | Australia | 767 | 27th September 2025 – 29th June 2026 | 6 | 38 | 0 | 61 | 33 |
| 3 | United Kingdom | 576 | 19th November 2025 – 8th July 2026 | 33 | 14 | 0 | 22 | 43 |
| 4 | France | 264 | 6th January 2026 – 28th June 2026 | 14 | 3 | 0 | 12 | 31 |
| 5 | Switzerland | 257 | 24th January 2026 – 10th July 2026 | 6 | 3 | 0 | 12 | 33 |
| 6 | Austria | 210 | 12th November 2025 – 22nd June 2026 | 5 | 2 | 0 | 8 | 22 |
| 7 | Italy | 129 | 18th November 2025 – 29th May 2026 | 9 | 3 | 0 | 11 | 10 |
| 8 | Pakistan | 118 | 11th April 2026 – 26th April 2026 | 0 | 0 | 0 | 1 | 7 |
| 9 | Spain | 105 | 20th February 2026 – 16th May 2026 | 5 | 0 | 0 | 10 | 11 |
| 10 | Germany | 103 | 3rd February 2026 – 26th June 2026 | 7 | 0 | 0 | 7 | 10 |
| Date | Time | User | Type | Name | Attribute | ||
|---|---|---|---|---|---|---|---|
| 101 | 26th June 2026 | 12:31:38 UTC | baz9 | list | History of 8C+ | list_description_pretty | |
|
Before
<p>test</p>
After
<p>Lists every boulders with a grade or FA grade suggestion of 8C+ or harder before 2020.</p>
|
|||||||
| 102 | 26th June 2026 | 12:29:42 UTC | baz9 | list | History of 8C+ | list_definition | |
|
Before
with grade_cutoff as (
select
g.order_on
from
grades g
where
g.climb_type_id = 2
and g.grade = '8C+'
limit 1
),
first_ascents as (
select
a.ascent_id
,a.climb_id
,a.climber_id
,a.ascent_dt_start
,a.ascent_dt_end
,sg.grade as suggested_grade
,sg.order_on as suggested_order_on
,initial_g.grade as initial_suggested_grade
,initial_g.order_on as initial_suggested_order_on
from
ascents a
left join grades sg
on a.suggested_grade_id = sg.grade_id
and sg.climb_type_id = 2
left join ascent_meta am_initial
on a.ascent_id = am_initial.ascent_id
and am_initial.ascent_meta_key_id = 26
left join grades initial_g
on am_initial.value = initial_g.grade_id::varchar
and initial_g.climb_type_id = 2
where
a.fa = true
and a.deleted_on is null
),
first_ascent_by_climb as (
select
fa.climb_id
,string_agg(
'<a href="/climber/' || cl.climber_id::varchar || '">' || cl.climber_name || '</a>'
,', '
order by cl.climber_name
) as first_ascent
,(array_agg(
pretty_dt(fa.ascent_dt_start, fa.ascent_dt_end)
order by order_dt(fa.ascent_dt_start, fa.ascent_dt_end)
))[1] as date
,min(order_dt(fa.ascent_dt_start, fa.ascent_dt_end)) as date_order
,(array_agg(
fa.suggested_grade
order by fa.suggested_order_on desc nulls last
))[1] as suggested_grade
,max(fa.suggested_order_on) as suggested_order_on
,(array_agg(
fa.initial_suggested_grade
order by fa.initial_suggested_order_on desc nulls last
))[1] as initial_suggested_grade
,max(fa.initial_suggested_order_on) as initial_suggested_order_on
from
first_ascents fa
inner join climbers cl
on fa.climber_id = cl.climber_id
and cl.deleted_on is null
group by
fa.climb_id
)
select
c.climb_uuid as row_uuid
,'<a href="/climb/' || c.climb_id::varchar || '">' || c.climb_name || '</a>' as "Name"
,g.grade as "Grade"
,fa.first_ascent as "First Ascent"
,case
when fa.initial_suggested_grade is not null
and fa.suggested_grade is not null
and fa.initial_suggested_grade != fa.suggested_grade
then fa.suggested_grade || ' ~ Initially suggested ' || fa.initial_suggested_grade
when fa.initial_suggested_grade is not null
and fa.initial_suggested_grade != coalesce(fa.suggested_grade, g.grade)
then coalesce(fa.suggested_grade, g.grade) || ' ~ Initially suggested ' || fa.initial_suggested_grade
when fa.suggested_grade is not null
then fa.suggested_grade
else g.grade
end as "FA Grade"
,fa.date as "Date"
from
climbs c
inner join grades g
on c.grade_id = g.grade_id
and g.climb_type_id = 2
inner join first_ascent_by_climb fa
on c.climb_id = fa.climb_id
cross join grade_cutoff gc
where
c.deleted_on is null
and c.climb_type = 2
and fa.date_order < 20160101
and (
g.order_on >= gc.order_on
or fa.suggested_order_on >= gc.order_on
or fa.initial_suggested_order_on >= gc.order_on
)
order by
fa.date_order
,greatest(
coalesce(g.order_on, 0)
,coalesce(fa.suggested_order_on, 0)
,coalesce(fa.initial_suggested_order_on, 0)
) desc
,c.climb_name
After
with grade_cutoff as (
select
g.order_on
from
grades g
where
g.climb_type_id = 2
and g.grade = '8C+'
limit 1
),
first_ascents as (
select
a.ascent_id
,a.climb_id
,a.climber_id
,a.ascent_dt_start
,a.ascent_dt_end
,sg.grade as suggested_grade
,sg.order_on as suggested_order_on
,initial_g.grade as initial_suggested_grade
,initial_g.order_on as initial_suggested_order_on
from
ascents a
left join grades sg
on a.suggested_grade_id = sg.grade_id
and sg.climb_type_id = 2
left join ascent_meta am_initial
on a.ascent_id = am_initial.ascent_id
and am_initial.ascent_meta_key_id = 26
left join grades initial_g
on am_initial.value = initial_g.grade_id::varchar
and initial_g.climb_type_id = 2
where
a.fa = true
and a.deleted_on is null
),
first_ascent_by_climb as (
select
fa.climb_id
,string_agg(
'<a href="/climber/' || cl.climber_id::varchar || '">' || cl.climber_name || '</a>'
,', '
order by cl.climber_name
) as first_ascent
,(array_agg(
pretty_dt(fa.ascent_dt_start, fa.ascent_dt_end)
order by order_dt(fa.ascent_dt_start, fa.ascent_dt_end)
))[1] as date
,min(order_dt(fa.ascent_dt_start, fa.ascent_dt_end)) as date_order
,(array_agg(
fa.suggested_grade
order by fa.suggested_order_on desc nulls last
))[1] as suggested_grade
,max(fa.suggested_order_on) as suggested_order_on
,(array_agg(
fa.initial_suggested_grade
order by fa.initial_suggested_order_on desc nulls last
))[1] as initial_suggested_grade
,max(fa.initial_suggested_order_on) as initial_suggested_order_on
from
first_ascents fa
inner join climbers cl
on fa.climber_id = cl.climber_id
and cl.deleted_on is null
group by
fa.climb_id
)
select
c.climb_uuid as row_uuid
,'<a href="/climb/' || c.climb_id::varchar || '">' || c.climb_name || '</a>' as "Name"
,g.grade as "Grade"
,fa.first_ascent as "First Ascent"
,case
when fa.initial_suggested_grade is not null
and fa.suggested_grade is not null
and fa.initial_suggested_grade != fa.suggested_grade
then fa.suggested_grade || ' ~ Initially suggested ' || fa.initial_suggested_grade
when fa.initial_suggested_grade is not null
and fa.initial_suggested_grade != coalesce(fa.suggested_grade, g.grade)
then coalesce(fa.suggested_grade, g.grade) || ' ~ Initially suggested ' || fa.initial_suggested_grade
when fa.suggested_grade is not null
then fa.suggested_grade
else g.grade
end as "FA Grade"
,fa.date as "Date"
from
climbs c
inner join grades g
on c.grade_id = g.grade_id
and g.climb_type_id = 2
inner join first_ascent_by_climb fa
on c.climb_id = fa.climb_id
cross join grade_cutoff gc
where
c.deleted_on is null
and c.climb_type = 2
and fa.date_order < 20200101
and (
g.order_on >= gc.order_on
or fa.suggested_order_on >= gc.order_on
or fa.initial_suggested_order_on >= gc.order_on
)
order by
fa.date_order
,greatest(
coalesce(g.order_on, 0)
,coalesce(fa.suggested_order_on, 0)
,coalesce(fa.initial_suggested_order_on, 0)
) desc
,c.climb_name
Diff
--- before
|
|||||||
| 103 | 26th June 2026 | 12:28:39 UTC | baz9 | list | History of 8C+ | list_name | |
|
Before
None
After
History of 8C+
|
|||||||
| 104 | 26th June 2026 | 12:28:39 UTC | baz9 | list | History of 8C+ | list_definition | |
|
Before
None
After
with grade_cutoff as (
select
g.order_on
from
grades g
where
g.climb_type_id = 2
and g.grade = '8C+'
limit 1
),
first_ascents as (
select
a.ascent_id
,a.climb_id
,a.climber_id
,a.ascent_dt_start
,a.ascent_dt_end
,sg.grade as suggested_grade
,sg.order_on as suggested_order_on
,initial_g.grade as initial_suggested_grade
,initial_g.order_on as initial_suggested_order_on
from
ascents a
left join grades sg
on a.suggested_grade_id = sg.grade_id
and sg.climb_type_id = 2
left join ascent_meta am_initial
on a.ascent_id = am_initial.ascent_id
and am_initial.ascent_meta_key_id = 26
left join grades initial_g
on am_initial.value = initial_g.grade_id::varchar
and initial_g.climb_type_id = 2
where
a.fa = true
and a.deleted_on is null
),
first_ascent_by_climb as (
select
fa.climb_id
,string_agg(
'<a href="/climber/' || cl.climber_id::varchar || '">' || cl.climber_name || '</a>'
,', '
order by cl.climber_name
) as first_ascent
,(array_agg(
pretty_dt(fa.ascent_dt_start, fa.ascent_dt_end)
order by order_dt(fa.ascent_dt_start, fa.ascent_dt_end)
))[1] as date
,min(order_dt(fa.ascent_dt_start, fa.ascent_dt_end)) as date_order
,(array_agg(
fa.suggested_grade
order by fa.suggested_order_on desc nulls last
))[1] as suggested_grade
,max(fa.suggested_order_on) as suggested_order_on
,(array_agg(
fa.initial_suggested_grade
order by fa.initial_suggested_order_on desc nulls last
))[1] as initial_suggested_grade
,max(fa.initial_suggested_order_on) as initial_suggested_order_on
from
first_ascents fa
inner join climbers cl
on fa.climber_id = cl.climber_id
and cl.deleted_on is null
group by
fa.climb_id
)
select
c.climb_uuid as row_uuid
,'<a href="/climb/' || c.climb_id::varchar || '">' || c.climb_name || '</a>' as "Name"
,g.grade as "Grade"
,fa.first_ascent as "First Ascent"
,case
when fa.initial_suggested_grade is not null
and fa.suggested_grade is not null
and fa.initial_suggested_grade != fa.suggested_grade
then fa.suggested_grade || ' ~ Initially suggested ' || fa.initial_suggested_grade
when fa.initial_suggested_grade is not null
and fa.initial_suggested_grade != coalesce(fa.suggested_grade, g.grade)
then coalesce(fa.suggested_grade, g.grade) || ' ~ Initially suggested ' || fa.initial_suggested_grade
when fa.suggested_grade is not null
then fa.suggested_grade
else g.grade
end as "FA Grade"
,fa.date as "Date"
from
climbs c
inner join grades g
on c.grade_id = g.grade_id
and g.climb_type_id = 2
inner join first_ascent_by_climb fa
on c.climb_id = fa.climb_id
cross join grade_cutoff gc
where
c.deleted_on is null
and c.climb_type = 2
and fa.date_order < 20160101
and (
g.order_on >= gc.order_on
or fa.suggested_order_on >= gc.order_on
or fa.initial_suggested_order_on >= gc.order_on
)
order by
fa.date_order
,greatest(
coalesce(g.order_on, 0)
,coalesce(fa.suggested_order_on, 0)
,coalesce(fa.initial_suggested_order_on, 0)
) desc
,c.climb_name
Diff
--- before
|
|||||||
| 105 | 26th June 2026 | 12:28:39 UTC | baz9 | list | History of 8C+ | list_type_id | |
|
Before
None
After
1
|
|||||||
| 106 | 26th June 2026 | 12:28:39 UTC | baz9 | list | History of 8C+ | list_description_pretty | |
|
Before
None
After
<p>test</p>
|
|||||||
| 107 | 26th June 2026 | 12:28:39 UTC | baz9 | list | History of 8C+ | list_description | |
|
Before
None
After
test
Diff
--- before
|
|||||||
| 108 | 26th June 2026 | 12:28:39 UTC | baz9 | list | History of 8C+ | list_type_name | |
|
Before
None
After
Bouldering
|
|||||||
| 109 | 26th June 2026 | 12:08:42 UTC | baz9 | ascent | Adam Ondra's ascent of Ledoborec | notes_pretty | |
|
Before
<blockquote>
<p>Ledoborec (Icebreaker in English) is a 28 moves long boulder problem and could as well be graded 9b/b+ route. It links 8B boulder problem called Blatant, which is very tricky on some of the poorest and the most slippery holds I have ever seen, directly into 8C called Iceberg. [2]</p>
</blockquote>
<h3>References</h3>
<p>[1] <a href="https://youtu.be/rEqUiPhyxFM" rel="noopener noreferrer">https://youtu.be/rEqUiPhyxFM</a></p>
<p>[2] <a href="https://www.facebook.com/adamondraofficial/videos/episode-70-new-8c-ledoborec/1150687888625501/" rel="noopener noreferrer">https://www.facebook.com/adamondraofficial/videos/episode-70-new-8c-ledoborec/1150687888625501/</a></p>
After
<p>9b/b+ as a route.</p>
<blockquote>
<p>Ledoborec (Icebreaker in English) is a 28 moves long boulder problem and could as well be graded 9b/b+ route. It links 8B boulder problem called Blatant, which is very tricky on some of the poorest and the most slippery holds I have ever seen, directly into 8C called Iceberg. [2]</p>
</blockquote>
<h3>References</h3>
<p>[1] <a href="https://youtu.be/rEqUiPhyxFM" rel="noopener noreferrer">https://youtu.be/rEqUiPhyxFM</a></p>
<p>[2] <a href="https://www.facebook.com/adamondraofficial/videos/episode-70-new-8c-ledoborec/1150687888625501/" rel="noopener noreferrer">https://www.facebook.com/adamondraofficial/videos/episode-70-new-8c-ledoborec/1150687888625501/</a></p>
|
|||||||
| 110 | 26th June 2026 | 12:08:42 UTC | baz9 | ascent | Adam Ondra's ascent of Ledoborec | notes | |
|
Before
> Ledoborec (Icebreaker in English) is a 28 moves long boulder problem and could as well be graded 9b/b+ route. It links 8B boulder problem called Blatant, which is very tricky on some of the poorest and the most slippery holds I have ever seen, directly into 8C called Iceberg. [2]
### References
[1] [https://youtu.be/rEqUiPhyxFM](https://youtu.be/rEqUiPhyxFM)
[2] [https://www.facebook.com/adamondraofficial/videos/episode-70-new-8c-ledoborec/1150687888625501/](https://www.facebook.com/adamondraofficial/videos/episode-70-new-8c-ledoborec/1150687888625501/)
After
9b/b+ as a route.
> Ledoborec (Icebreaker in English) is a 28 moves long boulder problem and could as well be graded 9b/b+ route. It links 8B boulder problem called Blatant, which is very tricky on some of the poorest and the most slippery holds I have ever seen, directly into 8C called Iceberg. [2]
### References
[1] [https://youtu.be/rEqUiPhyxFM](https://youtu.be/rEqUiPhyxFM)
[2] [https://www.facebook.com/adamondraofficial/videos/episode-70-new-8c-ledoborec/1150687888625501/](https://www.facebook.com/adamondraofficial/videos/episode-70-new-8c-ledoborec/1150687888625501/)
Diff
--- before
|
|||||||
| 111 | 26th June 2026 | 12:08:10 UTC | baz9 | ascent | Adam Ondra's ascent of Ledoborec | suggested_grade_id | |
|
Before
None
After
42
|
|||||||
| 112 | 26th June 2026 | 12:07:42 UTC | baz9 | ascent | Adam Ondra's ascent of Ledoborec | notes_pretty | |
|
Before
<blockquote>
<p>Ledoborec (Icebreaker in English) is a 28 moves long boulder problem and could as well be graded 9b/b+ route. It links 8B boulder problem called Blatant, which is very tricky on some of the poorest and the most slippery holds I have ever seen, directly into 8C called Iceberg.</p>
</blockquote>
<h3>References</h3>
<p>[1] <a href="https://youtu.be/rEqUiPhyxFM" rel="noopener noreferrer">https://youtu.be/rEqUiPhyxFM</a></p>
After
<blockquote>
<p>Ledoborec (Icebreaker in English) is a 28 moves long boulder problem and could as well be graded 9b/b+ route. It links 8B boulder problem called Blatant, which is very tricky on some of the poorest and the most slippery holds I have ever seen, directly into 8C called Iceberg. [2]</p>
</blockquote>
<h3>References</h3>
<p>[1] <a href="https://youtu.be/rEqUiPhyxFM" rel="noopener noreferrer">https://youtu.be/rEqUiPhyxFM</a></p>
<p>[2] <a href="https://www.facebook.com/adamondraofficial/videos/episode-70-new-8c-ledoborec/1150687888625501/" rel="noopener noreferrer">https://www.facebook.com/adamondraofficial/videos/episode-70-new-8c-ledoborec/1150687888625501/</a></p>
|
|||||||
| 113 | 26th June 2026 | 12:07:42 UTC | baz9 | ascent | Adam Ondra's ascent of Ledoborec | notes | |
|
Before
> Ledoborec (Icebreaker in English) is a 28 moves long boulder problem and could as well be graded 9b/b+ route. It links 8B boulder problem called Blatant, which is very tricky on some of the poorest and the most slippery holds I have ever seen, directly into 8C called Iceberg.
### References
[1] [https://youtu.be/rEqUiPhyxFM](https://youtu.be/rEqUiPhyxFM)
After
> Ledoborec (Icebreaker in English) is a 28 moves long boulder problem and could as well be graded 9b/b+ route. It links 8B boulder problem called Blatant, which is very tricky on some of the poorest and the most slippery holds I have ever seen, directly into 8C called Iceberg. [2]
### References
[1] [https://youtu.be/rEqUiPhyxFM](https://youtu.be/rEqUiPhyxFM)
[2] [https://www.facebook.com/adamondraofficial/videos/episode-70-new-8c-ledoborec/1150687888625501/](https://www.facebook.com/adamondraofficial/videos/episode-70-new-8c-ledoborec/1150687888625501/)
Diff
--- before
|
|||||||
| 114 | 26th June 2026 | 12:06:56 UTC | baz9 | ascent | Adam Ondra's ascent of Ledoborec | notes | |
|
Before
### References
[1] [https://youtu.be/rEqUiPhyxFM](https://youtu.be/rEqUiPhyxFM)
After
> Ledoborec (Icebreaker in English) is a 28 moves long boulder problem and could as well be graded 9b/b+ route. It links 8B boulder problem called Blatant, which is very tricky on some of the poorest and the most slippery holds I have ever seen, directly into 8C called Iceberg.
### References
[1] [https://youtu.be/rEqUiPhyxFM](https://youtu.be/rEqUiPhyxFM)
Diff
--- before
|
|||||||
| 115 | 26th June 2026 | 12:06:56 UTC | baz9 | ascent | Adam Ondra's ascent of Ledoborec | notes_pretty | |
|
Before
<h3>References</h3>
<p>[1] <a href="https://youtu.be/rEqUiPhyxFM" rel="noopener noreferrer">https://youtu.be/rEqUiPhyxFM</a></p>
After
<blockquote>
<p>Ledoborec (Icebreaker in English) is a 28 moves long boulder problem and could as well be graded 9b/b+ route. It links 8B boulder problem called Blatant, which is very tricky on some of the poorest and the most slippery holds I have ever seen, directly into 8C called Iceberg.</p>
</blockquote>
<h3>References</h3>
<p>[1] <a href="https://youtu.be/rEqUiPhyxFM" rel="noopener noreferrer">https://youtu.be/rEqUiPhyxFM</a></p>
|
|||||||
| 116 | 26th June 2026 | 12:06:00 UTC | baz9 | climb | Ledoborec | See Also | |
|
Before
None
After
1888
|
|||||||
| 117 | 26th June 2026 | 12:05:28 UTC | baz9 | ascent | Adam Ondra's ascent of Ledoborec | Grade Breakdown | |
|
Before
None
After
8B 8C
|
|||||||
| 118 | 26th June 2026 | 12:02:01 UTC | baz9 | climb | Ledoborec | Translation | |
|
Before
None
After
Icebreaker
|
|||||||
| 119 | 26th June 2026 | 11:52:06 UTC | baz9 | ascent | Dai Koyamada's ascent of Nayuta | notes_pretty | |
|
Before
<h3>References</h3>
<p>[1] <a href="https://www.ukclimbing.com/news/2017/04/nayuta_8c+_first_ascent_by_dai_koyamada-71028">https://www.ukclimbing.com/news/2017/04/nayuta_8c+_first_ascent_by_dai_koyamada-71028</a></p>
<p>[2] <a href="https://vimeo.com/ondemand/nayutav16">https://vimeo.com/ondemand/nayutav16</a></p>
After
<h3>References</h3>
<p>[1] <a href="https://www.ukclimbing.com/news/2017/04/nayuta_8c+_first_ascent_by_dai_koyamada-71028" rel="noopener noreferrer">https://www.ukclimbing.com/news/2017/04/nayuta_8c+_first_ascent_by_dai_koyamada-71028</a></p>
<p>[2] <a href="https://vimeo.com/ondemand/nayutav16" rel="noopener noreferrer">https://vimeo.com/ondemand/nayutav16</a></p>
|
|||||||
| 120 | 26th June 2026 | 11:52:06 UTC | baz9 | ascent | Dai Koyamada's ascent of Nayuta | suggested_grade_id | |
|
Before
None
After
42
|
|||||||