For loop does not display all entries in section
Craft has a default limit of a 100 elements returned via an ElementCriteriaModel. To pull all elements, you'll need to explicitly set limit to null:

{% for post in craft.entries.section('posts').limit(null) %}
    ...
{% endfor %}