Document read_main_file and simplify the logic a little
diff --git a/scripts/assemble_changelog.py b/scripts/assemble_changelog.py
index 616978e..1d47557 100755
--- a/scripts/assemble_changelog.py
+++ b/scripts/assemble_changelog.py
@@ -86,10 +86,15 @@
         input_stream. This is typically a file opened for reading, but
         can be any generator returning the lines to read.
         """
+        # Content before the level-2 section where the new entries are to be
+        # added.
         self.header = []
+        # Content of the level-3 sections of where the new entries are to
+        # be added.
         self.section_content = OrderedDict()
         for section in STANDARD_SECTIONS:
             self.section_content[section] = []
+        # Content of level-2 sections for already-released versions.
         self.trailer = []
         self.read_main_file(input_stream)
 
@@ -100,21 +105,23 @@
         of the class and may not act sensibly on an object that is already
         partially populated.
         """
+        # Parse the first level-2 section. Everything before the first
+        # level-3 section title ("###...") following the first level-2
+        # section title ("##...") is passed through as the header
+        # and everything after the second level-2 section title is passed
+        # through as the trailer. Inside the first level-2 section,
+        # split out the level-3 sections.
         level_2_seen = 0
         current_section = None
         for line in input_stream:
             level, content = self.title_level(line)
             if level == 2:
                 level_2_seen += 1
-                if level_2_seen <= 1:
-                    self.header.append(line)
-                else:
-                    self.trailer.append(line)
             elif level == 3 and level_2_seen == 1:
                 current_section = content
                 self.section_content.setdefault(content, [])
-            elif level_2_seen == 1 and current_section is not None:
-                if line.strip():
+            if level_2_seen == 1 and current_section is not None:
+                if level != 3 and line.strip():
                     self.section_content[current_section].append(line)
             elif level_2_seen <= 1:
                 self.header.append(line)