From 9763c679ce5db7ec98088c9e7695b45a98afbcd5 Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Thu, 14 Dec 2023 17:53:05 -0500
Subject: [PATCH 01/51] . t Working setup - directory structure, pytest,
 approvalTests.

---
 .gitignore                                    |  3 ++-
 .rustup/settings.toml                         |  4 ++++
 .../cleanup_session_notes.pl                  |  0
 .../cleanup_session_notes.prompt              |  0
 .../session_notes_cleanup}/doit               |  0
 .../session_notes_cleaner.py                  | 18 +++++++++++++++++-
 ...ner.test_import_approvalTests.approved.txt |  1 +
 tests/__init__.py                             |  0
 tests/test_session_notes_cleaner.py           | 19 +++++++++++++++++++
 9 files changed, 43 insertions(+), 2 deletions(-)
 create mode 100644 .rustup/settings.toml
 rename {session-notes/cleanup-notes => src/session_notes_cleanup}/cleanup_session_notes.pl (100%)
 rename {session-notes/cleanup-notes => src/session_notes_cleanup}/cleanup_session_notes.prompt (100%)
 rename {session-notes/cleanup-notes => src/session_notes_cleanup}/doit (100%)
 rename session-notes/cleanup-notes/cleanup_session_notes.py => src/session_notes_cleanup/session_notes_cleaner.py (93%)
 create mode 100644 tests/TestSessionNotesCleaner.test_import_approvalTests.approved.txt
 create mode 100644 tests/__init__.py
 create mode 100644 tests/test_session_notes_cleaner.py

diff --git a/.gitignore b/.gitignore
index 723ef36..21f0e41 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
-.idea
\ No newline at end of file
+.idea
+Library/Caches
diff --git a/.rustup/settings.toml b/.rustup/settings.toml
new file mode 100644
index 0000000..1551bc9
--- /dev/null
+++ b/.rustup/settings.toml
@@ -0,0 +1,4 @@
+profile = "default"
+version = "12"
+
+[overrides]
diff --git a/session-notes/cleanup-notes/cleanup_session_notes.pl b/src/session_notes_cleanup/cleanup_session_notes.pl
similarity index 100%
rename from session-notes/cleanup-notes/cleanup_session_notes.pl
rename to src/session_notes_cleanup/cleanup_session_notes.pl
diff --git a/session-notes/cleanup-notes/cleanup_session_notes.prompt b/src/session_notes_cleanup/cleanup_session_notes.prompt
similarity index 100%
rename from session-notes/cleanup-notes/cleanup_session_notes.prompt
rename to src/session_notes_cleanup/cleanup_session_notes.prompt
diff --git a/session-notes/cleanup-notes/doit b/src/session_notes_cleanup/doit
similarity index 100%
rename from session-notes/cleanup-notes/doit
rename to src/session_notes_cleanup/doit
diff --git a/session-notes/cleanup-notes/cleanup_session_notes.py b/src/session_notes_cleanup/session_notes_cleaner.py
similarity index 93%
rename from session-notes/cleanup-notes/cleanup_session_notes.py
rename to src/session_notes_cleanup/session_notes_cleaner.py
index 47f40a6..5a83fa6 100644
--- a/session-notes/cleanup-notes/cleanup_session_notes.py
+++ b/src/session_notes_cleanup/session_notes_cleaner.py
@@ -5,10 +5,17 @@
 import shutil
 import sys
 
+
+class SessionNotesCleaner:
+    def __init__(self):
+        pass
+
+
 def get_date_from_filename(filename):
     match = re.search(r'(\d{4}-\d{2}-\d{2})', filename, re.IGNORECASE)
     return match.group(1) if match else None
 
+
 def slurp_file(filename):
     try:
         with open(filename, 'r') as file:
@@ -16,21 +23,28 @@ def slurp_file(filename):
     except FileNotFoundError:
         return None
 
+
 def contains_inactive_coauthors(contents):
     return bool(re.search(r'^#+\s*Inactive Co-Authors', contents, re.IGNORECASE | re.MULTILINE))
 
+
 def contains_active_coauthors(contents):
     return bool(re.search(r'^#+\s*Active Co-Authors', contents, re.IGNORECASE | re.MULTILINE))
 
+
 def contains_session_date(contents):
     return bool(re.search(r'^#+\s*Session Date', contents, re.IGNORECASE | re.MULTILINE))
 
+
 def delete_inactive_coauthors(contents):
-    return re.sub(r'^#+\s*Inactive Co-Authors.*?(?=^#|\Z)', '', contents, flags=re.IGNORECASE | re.MULTILINE | re.DOTALL)
+    return re.sub(r'^#+\s*Inactive Co-Authors.*?(?=^#|\Z)', '', contents,
+                  flags=re.IGNORECASE | re.MULTILINE | re.DOTALL)
+
 
 def normalize_coauthor_heading(contents):
     return re.sub(r'^#+\s*.*Co-Author.*', '## Co-Authors', contents, flags=re.IGNORECASE | re.MULTILINE)
 
+
 def cleanup_file(filename):
     original_contents = slurp_file(filename)
     if original_contents is None:
@@ -61,9 +75,11 @@ def cleanup_file(filename):
         os.rename(new_filename, filename)
         print(f"You can view changes by issuing this command: diff -u {original_backup_filename} {filename}")
 
+
 def main():
     for filename in sys.argv[1:]:
         cleanup_file(filename)
 
+
 if __name__ == "__main__":
     main()
diff --git a/tests/TestSessionNotesCleaner.test_import_approvalTests.approved.txt b/tests/TestSessionNotesCleaner.test_import_approvalTests.approved.txt
new file mode 100644
index 0000000..2e6945c
--- /dev/null
+++ b/tests/TestSessionNotesCleaner.test_import_approvalTests.approved.txt
@@ -0,0 +1 @@
+approvalTests::verify is imported
diff --git a/tests/__init__.py b/tests/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/tests/test_session_notes_cleaner.py b/tests/test_session_notes_cleaner.py
new file mode 100644
index 0000000..94b1fec
--- /dev/null
+++ b/tests/test_session_notes_cleaner.py
@@ -0,0 +1,19 @@
+# test_session_notes_cleaner.py
+import unittest
+from approvaltests import verify
+
+from src.session_notes_cleanup.session_notes_cleaner import SessionNotesCleaner
+
+
+class TestSessionNotesCleaner(unittest.TestCase):
+    def test_initialization(self):
+        cleaner = SessionNotesCleaner()
+        # Add assertions here to test initial conditions
+        self.assertIsNotNone(cleaner)
+
+    def test_import_approvalTests(self):
+        verify("approvalTests::verify is imported\n")
+
+
+if __name__ == '__main__':
+    unittest.main()

From c14d1365c0f0313d90a178627e31f9ebc5cdcdc7 Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Thu, 14 Dec 2023 18:03:52 -0500
Subject: [PATCH 02/51] . t Added .ignore entries for 'Python' and 'macOS'

---
 .gitignore                                    | 197 +++++++++++++++++-
 .idea/.gitignore                              |   3 +
 .../inspectionProfiles/profiles_settings.xml  |   6 +
 .idea/misc.xml                                |   4 +
 .idea/mob-programming-rpg_gregorriegler.iml   |  12 ++
 .idea/modules.xml                             |   8 +
 .idea/vcs.xml                                 |   6 +
 7 files changed, 234 insertions(+), 2 deletions(-)
 create mode 100644 .idea/.gitignore
 create mode 100644 .idea/inspectionProfiles/profiles_settings.xml
 create mode 100644 .idea/misc.xml
 create mode 100644 .idea/mob-programming-rpg_gregorriegler.iml
 create mode 100644 .idea/modules.xml
 create mode 100644 .idea/vcs.xml

diff --git a/.gitignore b/.gitignore
index 21f0e41..8f72e10 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,195 @@
-.idea
-Library/Caches
+# Copied from https://github.com/github/gitignore/blob/main/Python.gitignore
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+lib/
+lib64/
+parts/
+sdist/
+var/
+wheels/
+share/python-wheels/
+*.egg-info/
+.installed.cfg
+*.egg
+MANIFEST
+
+# PyInstaller
+#  Usually these files are written by a python script from a template
+#  before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.nox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*.cover
+*.py,cover
+.hypothesis/
+.pytest_cache/
+cover/
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+local_settings.py
+db.sqlite3
+db.sqlite3-journal
+
+# Flask stuff:
+instance/
+.webassets-cache
+
+# Scrapy stuff:
+.scrapy
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+.pybuilder/
+target/
+
+# Jupyter Notebook
+.ipynb_checkpoints
+
+# IPython
+profile_default/
+ipython_config.py
+
+# pyenv
+#   For a library or package, you might want to ignore these files since the code is
+#   intended to run in multiple environments; otherwise, check them in:
+# .python-version
+
+# pipenv
+#   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
+#   However, in case of collaboration, if having platform-specific dependencies or dependencies
+#   having no cross-platform support, pipenv may install dependencies that don't work, or not
+#   install all needed dependencies.
+#Pipfile.lock
+
+# poetry
+#   Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
+#   This is especially recommended for binary packages to ensure reproducibility, and is more
+#   commonly ignored for libraries.
+#   https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
+#poetry.lock
+
+# pdm
+#   Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
+#pdm.lock
+#   pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
+#   in version control.
+#   https://pdm.fming.dev/#use-with-ide
+.pdm.toml
+
+# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
+__pypackages__/
+
+# Celery stuff
+celerybeat-schedule
+celerybeat.pid
+
+# SageMath parsed files
+*.sage.py
+
+# Environments
+.env
+.venv
+env/
+venv/
+ENV/
+env.bak/
+venv.bak/
+
+# Spyder project settings
+.spyderproject
+.spyproject
+
+# Rope project settings
+.ropeproject
+
+# mkdocs documentation
+/site
+
+# mypy
+.mypy_cache/
+.dmypy.json
+dmypy.json
+
+# Pyre type checker
+.pyre/
+
+# pytype static type analyzer
+.pytype/
+
+# Cython debug symbols
+cython_debug/
+
+# PyCharm
+#  JetBrains specific template is maintained in a separate JetBrains.gitignore that can
+#  be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
+#  and can be added to the global gitignore or merged into this file.  For a more nuclear
+#  option (not recommended) you can uncomment the following to ignore the entire idea folder.
+#.idea/
+
+# 2023-12-04.  MRW commented out at suggestion of Python.gitignore
+# .idea
+
+
+
+# 2023-12-04 - Copied from https://github.com/github/gitignore/blob/main/Global/macOS.gitignore
+# General
+.DS_Store
+.AppleDouble
+.LSOverride
+
+# Icon must end with two \r
+Icon
+
+
+# Thumbnails
+._*
+
+# Files that might appear in the root of a volume
+.DocumentRevisions-V100
+.fseventsd
+.Spotlight-V100
+.TemporaryItems
+.Trashes
+.VolumeIcon.icns
+.com.apple.timemachine.donotpresent
+
+# Directories potentially created on remote AFP share
+.AppleDB
+.AppleDesktop
+Network Trash Folder
+Temporary Items
+.apdisk
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..105ce2d
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+<component name="InspectionProjectProfileManager">
+  <settings>
+    <option name="USE_PROJECT_PROFILE" value="false" />
+    <version value="1.0" />
+  </settings>
+</component>
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..ea2923c
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10 (mob-programming-rpg_gregorriegler)" project-jdk-type="Python SDK" />
+</project>
\ No newline at end of file
diff --git a/.idea/mob-programming-rpg_gregorriegler.iml b/.idea/mob-programming-rpg_gregorriegler.iml
new file mode 100644
index 0000000..3d7e4be
--- /dev/null
+++ b/.idea/mob-programming-rpg_gregorriegler.iml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="PYTHON_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" />
+      <excludeFolder url="file://$MODULE_DIR$/venv" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..2787959
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/mob-programming-rpg_gregorriegler.iml" filepath="$PROJECT_DIR$/.idea/mob-programming-rpg_gregorriegler.iml" />
+    </modules>
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="Git" />
+  </component>
+</project>
\ No newline at end of file

From 4ab3e568bf385ad6a453b737ccc8128ab41f1d3e Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Thu, 14 Dec 2023 18:05:36 -0500
Subject: [PATCH 03/51] . t Moved files from session-notes/cleanup-notes to src

---
 session-notes/cleanup-notes/.idea/.gitignore           |  3 +++
 session-notes/cleanup-notes/.idea/cleanup-notes.iml    | 10 ++++++++++
 .../.idea/inspectionProfiles/profiles_settings.xml     |  6 ++++++
 session-notes/cleanup-notes/.idea/misc.xml             |  4 ++++
 session-notes/cleanup-notes/.idea/modules.xml          |  8 ++++++++
 session-notes/cleanup-notes/.idea/vcs.xml              |  6 ++++++
 6 files changed, 37 insertions(+)
 create mode 100644 session-notes/cleanup-notes/.idea/.gitignore
 create mode 100644 session-notes/cleanup-notes/.idea/cleanup-notes.iml
 create mode 100644 session-notes/cleanup-notes/.idea/inspectionProfiles/profiles_settings.xml
 create mode 100644 session-notes/cleanup-notes/.idea/misc.xml
 create mode 100644 session-notes/cleanup-notes/.idea/modules.xml
 create mode 100644 session-notes/cleanup-notes/.idea/vcs.xml

diff --git a/session-notes/cleanup-notes/.idea/.gitignore b/session-notes/cleanup-notes/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/session-notes/cleanup-notes/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/session-notes/cleanup-notes/.idea/cleanup-notes.iml b/session-notes/cleanup-notes/.idea/cleanup-notes.iml
new file mode 100644
index 0000000..74d515a
--- /dev/null
+++ b/session-notes/cleanup-notes/.idea/cleanup-notes.iml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="PYTHON_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$">
+      <excludeFolder url="file://$MODULE_DIR$/venv" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/session-notes/cleanup-notes/.idea/inspectionProfiles/profiles_settings.xml b/session-notes/cleanup-notes/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..105ce2d
--- /dev/null
+++ b/session-notes/cleanup-notes/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+<component name="InspectionProjectProfileManager">
+  <settings>
+    <option name="USE_PROJECT_PROFILE" value="false" />
+    <version value="1.0" />
+  </settings>
+</component>
\ No newline at end of file
diff --git a/session-notes/cleanup-notes/.idea/misc.xml b/session-notes/cleanup-notes/.idea/misc.xml
new file mode 100644
index 0000000..cd3a88e
--- /dev/null
+++ b/session-notes/cleanup-notes/.idea/misc.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10 (cleanup-notes)" project-jdk-type="Python SDK" />
+</project>
\ No newline at end of file
diff --git a/session-notes/cleanup-notes/.idea/modules.xml b/session-notes/cleanup-notes/.idea/modules.xml
new file mode 100644
index 0000000..3855ef9
--- /dev/null
+++ b/session-notes/cleanup-notes/.idea/modules.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/cleanup-notes.iml" filepath="$PROJECT_DIR$/.idea/cleanup-notes.iml" />
+    </modules>
+  </component>
+</project>
\ No newline at end of file
diff --git a/session-notes/cleanup-notes/.idea/vcs.xml b/session-notes/cleanup-notes/.idea/vcs.xml
new file mode 100644
index 0000000..b2bdec2
--- /dev/null
+++ b/session-notes/cleanup-notes/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
+  </component>
+</project>
\ No newline at end of file

From 469c09235aa7acbf21e4e3caa936dad08423b81c Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Thu, 14 Dec 2023 18:58:18 -0500
Subject: [PATCH 04/51] . t Ignore tests/*.received.* files

---
 .gitignore | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/.gitignore b/.gitignore
index 8f72e10..f28bd65 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,7 @@
+# ApprovalTests
+tests/*.approved.*
+
+
 # Copied from https://github.com/github/gitignore/blob/main/Python.gitignore
 # Byte-compiled / optimized / DLL files
 __pycache__/

From b6bfadb1bda85e7d2c1c8010a2adadd00b367561 Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Thu, 14 Dec 2023 18:59:29 -0500
Subject: [PATCH 05/51] . t Passing test - test_strip_trailing_whitespace

---
 tests/test_session_notes_cleaner.py | 99 +++++++++++++++++++++++++++++
 1 file changed, 99 insertions(+)

diff --git a/tests/test_session_notes_cleaner.py b/tests/test_session_notes_cleaner.py
index 94b1fec..f1ca6b1 100644
--- a/tests/test_session_notes_cleaner.py
+++ b/tests/test_session_notes_cleaner.py
@@ -1,4 +1,5 @@
 # test_session_notes_cleaner.py
+import re
 import unittest
 from approvaltests import verify
 
@@ -14,6 +15,104 @@ def test_initialization(self):
     def test_import_approvalTests(self):
         verify("approvalTests::verify is imported\n")
 
+    def strip_trailing_whitespace(self, text):
+        # Regular expression pattern to match trailing horizontal whitespace on each line, excluding newline
+        pattern = r'[ \t]+\n'
+        # Replace matched patterns with nothing (i.e., remove them)
+        return re.sub(pattern, '\n', text)
+
+    def sample_file_contents(self):
+        return '''# Session Date: 2023-12-07
+
+    ## Active Co-Authors   
+    Co-Authored-By: Nathaniel Herman <nathaniel.herman@gmail.com>   
+    Co-Authored-By: Blaise Pabon <blaise@gmail.com>         
+    Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>       
+    Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net> 
+    Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>   
+    Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
+    Co-Authored-By: Nathaniel Herman <nathaniel.herman@gmail.com>
+
+
+    ## Inactive Co-Authors
+    Co-Authored-By: Blaise Pabon <blaise@gmail.com>
+    Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
+    Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
+    Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
+    Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
+    Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
+    Co-Authored-By: arrockt <cariari385@gmail.com>
+    Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
+    Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
+    Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
+    Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
+    Co-Authored-By: Idan Melamed <idanmel@gmail.com>
+    Co-Authored-By: Rea <reasu@protonmail.com>
+    Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
+    Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
+    Co-Authored-By: David Campey <campey@gmail.com>
+    Co-Authored-by: Zac Ball <zac156@gmail.com>
+    Co-Authored-By: Kitastro <admin@metafor.co.za>
+    Co-Authored-By: Woody Zuill <wzuill@yahoo.com>
+    Co-Authored-By: Llewellyn Falco <llewellyn.falco@gmail.com>
+
+    # Agenda
+
+    ## Bond (30 min.)
+
+    -   Try a [warmup exercise](../docs/warmup-exercises.md)
+
+    ## Do ?
+    FizzBuzz in Clojure
+    https://cyber-dojo.org/kata/edit/EtbGU6
+
+
+    ## Mid Session Retro (10 min.)
+    Tips: 
+    - TRY FOR 10 MIN. LIMIT. HAVE A HELPER ALSO TIME. AT END OF TIME, VOTE TO EXTEND IF NEEDED ONLY
+    - Remember "Kindness, consideration and respect" - assume good intent; everyone is doing the best they can 
+
+    How did that feel (1-2 words / 30 sec)?
+    - frustrating, fulfilling, overwhelmed
+    - exciting, playful
+    - curious, scared, fulfilled
+    - rocky, relieved
+    - resfreshing, collaborative
+
+    What did you like so much you want to do more of it / do it again?
+    - clojure
+    - everybody involved
+    - observation doing thinking for another person
+    - practicing thinking out loud +1
+    - Nn8 doing like a pro:
+      - I feel overwhelmed
+      - Modeled being honest and verbalizing where he was and what he was thinking.
+      - Stream of thought
+    - Modeling how we can get off track and on track
+    - Copying an old test case to create a new one
+
+    What might you want to try differently / experiment?
+    - Remind newcomers to enter their author info (eg. Co-Authored-By: Blaise Pabon <blaise@gmail.com>)
+
+    ## Do ?
+    Continue FizzBuzz in Clojure
+    https://cyber-dojo.org/kata/edit/EtbGU6
+
+    # 2nd Retro (END OF SESSION)
+
+    What to do next? Vote on Proposals:
+    - Proposals:
+        - 1. spending less time deciding on what we're doing (more time coding)
+        - 2. shared leadership, dedicated facilitation
+        - 3. consider a checklist for newcomers (was a discussion about this)
+        - 4. consider items in the backlog (reminders, what are we working on, etc.
+'''
+
+    def test_strip_trailing_whitespace(self):
+        text = self.sample_file_contents()
+        stripped_text = self.strip_trailing_whitespace(text)
+        verify(stripped_text)
+
 
 if __name__ == '__main__':
     unittest.main()

From be0cdf686bb082d3be4cfbe34b571242fe4117f4 Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Thu, 14 Dec 2023 18:59:41 -0500
Subject: [PATCH 06/51] . t Passing test - test_strip_trailing_whitespace

---
 ...est_strip_trailing_whitespace.approved.txt | 84 +++++++++++++++++++
 1 file changed, 84 insertions(+)
 create mode 100644 tests/TestSessionNotesCleaner.test_strip_trailing_whitespace.approved.txt

diff --git a/tests/TestSessionNotesCleaner.test_strip_trailing_whitespace.approved.txt b/tests/TestSessionNotesCleaner.test_strip_trailing_whitespace.approved.txt
new file mode 100644
index 0000000..dbf1a5a
--- /dev/null
+++ b/tests/TestSessionNotesCleaner.test_strip_trailing_whitespace.approved.txt
@@ -0,0 +1,84 @@
+# Session Date: 2023-12-07
+
+    ## Active Co-Authors
+    Co-Authored-By: Nathaniel Herman <nathaniel.herman@gmail.com>
+    Co-Authored-By: Blaise Pabon <blaise@gmail.com>
+    Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
+    Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
+    Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
+    Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
+    Co-Authored-By: Nathaniel Herman <nathaniel.herman@gmail.com>
+
+
+    ## Inactive Co-Authors
+    Co-Authored-By: Blaise Pabon <blaise@gmail.com>
+    Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
+    Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
+    Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
+    Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
+    Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
+    Co-Authored-By: arrockt <cariari385@gmail.com>
+    Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
+    Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
+    Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
+    Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
+    Co-Authored-By: Idan Melamed <idanmel@gmail.com>
+    Co-Authored-By: Rea <reasu@protonmail.com>
+    Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
+    Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
+    Co-Authored-By: David Campey <campey@gmail.com>
+    Co-Authored-by: Zac Ball <zac156@gmail.com>
+    Co-Authored-By: Kitastro <admin@metafor.co.za>
+    Co-Authored-By: Woody Zuill <wzuill@yahoo.com>
+    Co-Authored-By: Llewellyn Falco <llewellyn.falco@gmail.com>
+
+    # Agenda
+
+    ## Bond (30 min.)
+
+    -   Try a [warmup exercise](../docs/warmup-exercises.md)
+
+    ## Do ?
+    FizzBuzz in Clojure
+    https://cyber-dojo.org/kata/edit/EtbGU6
+
+
+    ## Mid Session Retro (10 min.)
+    Tips:
+    - TRY FOR 10 MIN. LIMIT. HAVE A HELPER ALSO TIME. AT END OF TIME, VOTE TO EXTEND IF NEEDED ONLY
+    - Remember "Kindness, consideration and respect" - assume good intent; everyone is doing the best they can
+
+    How did that feel (1-2 words / 30 sec)?
+    - frustrating, fulfilling, overwhelmed
+    - exciting, playful
+    - curious, scared, fulfilled
+    - rocky, relieved
+    - resfreshing, collaborative
+
+    What did you like so much you want to do more of it / do it again?
+    - clojure
+    - everybody involved
+    - observation doing thinking for another person
+    - practicing thinking out loud +1
+    - Nn8 doing like a pro:
+      - I feel overwhelmed
+      - Modeled being honest and verbalizing where he was and what he was thinking.
+      - Stream of thought
+    - Modeling how we can get off track and on track
+    - Copying an old test case to create a new one
+
+    What might you want to try differently / experiment?
+    - Remind newcomers to enter their author info (eg. Co-Authored-By: Blaise Pabon <blaise@gmail.com>)
+
+    ## Do ?
+    Continue FizzBuzz in Clojure
+    https://cyber-dojo.org/kata/edit/EtbGU6
+
+    # 2nd Retro (END OF SESSION)
+
+    What to do next? Vote on Proposals:
+    - Proposals:
+        - 1. spending less time deciding on what we're doing (more time coding)
+        - 2. shared leadership, dedicated facilitation
+        - 3. consider a checklist for newcomers (was a discussion about this)
+        - 4. consider items in the backlog (reminders, what are we working on, etc.

From 510f0586938427fca7e2dc4e117773516b2cd3e4 Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Thu, 14 Dec 2023 19:06:54 -0500
Subject: [PATCH 07/51] . t Simpler input to test_strip_trailing_whitespace

---
 ...est_strip_trailing_whitespace.approved.txt | 89 ++-----------------
 tests/test_session_notes_cleaner.py           | 16 +++-
 2 files changed, 22 insertions(+), 83 deletions(-)

diff --git a/tests/TestSessionNotesCleaner.test_strip_trailing_whitespace.approved.txt b/tests/TestSessionNotesCleaner.test_strip_trailing_whitespace.approved.txt
index dbf1a5a..5223074 100644
--- a/tests/TestSessionNotesCleaner.test_strip_trailing_whitespace.approved.txt
+++ b/tests/TestSessionNotesCleaner.test_strip_trailing_whitespace.approved.txt
@@ -1,84 +1,11 @@
-# Session Date: 2023-12-07
+Line with trailing spaces
+Line with trailing tabs
+    Line with 4 leading spaces
+        Line with 2 leading tabs
+Following line is empty
 
-    ## Active Co-Authors
-    Co-Authored-By: Nathaniel Herman <nathaniel.herman@gmail.com>
-    Co-Authored-By: Blaise Pabon <blaise@gmail.com>
-    Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
-    Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
-    Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
-    Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
-    Co-Authored-By: Nathaniel Herman <nathaniel.herman@gmail.com>
+Following line has 3 tabs
 
+Following line has 4 spaces
 
-    ## Inactive Co-Authors
-    Co-Authored-By: Blaise Pabon <blaise@gmail.com>
-    Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
-    Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
-    Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
-    Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
-    Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
-    Co-Authored-By: arrockt <cariari385@gmail.com>
-    Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
-    Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
-    Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
-    Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
-    Co-Authored-By: Idan Melamed <idanmel@gmail.com>
-    Co-Authored-By: Rea <reasu@protonmail.com>
-    Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
-    Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
-    Co-Authored-By: David Campey <campey@gmail.com>
-    Co-Authored-by: Zac Ball <zac156@gmail.com>
-    Co-Authored-By: Kitastro <admin@metafor.co.za>
-    Co-Authored-By: Woody Zuill <wzuill@yahoo.com>
-    Co-Authored-By: Llewellyn Falco <llewellyn.falco@gmail.com>
-
-    # Agenda
-
-    ## Bond (30 min.)
-
-    -   Try a [warmup exercise](../docs/warmup-exercises.md)
-
-    ## Do ?
-    FizzBuzz in Clojure
-    https://cyber-dojo.org/kata/edit/EtbGU6
-
-
-    ## Mid Session Retro (10 min.)
-    Tips:
-    - TRY FOR 10 MIN. LIMIT. HAVE A HELPER ALSO TIME. AT END OF TIME, VOTE TO EXTEND IF NEEDED ONLY
-    - Remember "Kindness, consideration and respect" - assume good intent; everyone is doing the best they can
-
-    How did that feel (1-2 words / 30 sec)?
-    - frustrating, fulfilling, overwhelmed
-    - exciting, playful
-    - curious, scared, fulfilled
-    - rocky, relieved
-    - resfreshing, collaborative
-
-    What did you like so much you want to do more of it / do it again?
-    - clojure
-    - everybody involved
-    - observation doing thinking for another person
-    - practicing thinking out loud +1
-    - Nn8 doing like a pro:
-      - I feel overwhelmed
-      - Modeled being honest and verbalizing where he was and what he was thinking.
-      - Stream of thought
-    - Modeling how we can get off track and on track
-    - Copying an old test case to create a new one
-
-    What might you want to try differently / experiment?
-    - Remind newcomers to enter their author info (eg. Co-Authored-By: Blaise Pabon <blaise@gmail.com>)
-
-    ## Do ?
-    Continue FizzBuzz in Clojure
-    https://cyber-dojo.org/kata/edit/EtbGU6
-
-    # 2nd Retro (END OF SESSION)
-
-    What to do next? Vote on Proposals:
-    - Proposals:
-        - 1. spending less time deciding on what we're doing (more time coding)
-        - 2. shared leadership, dedicated facilitation
-        - 3. consider a checklist for newcomers (was a discussion about this)
-        - 4. consider items in the backlog (reminders, what are we working on, etc.
+This is last line.
diff --git a/tests/test_session_notes_cleaner.py b/tests/test_session_notes_cleaner.py
index f1ca6b1..a29411b 100644
--- a/tests/test_session_notes_cleaner.py
+++ b/tests/test_session_notes_cleaner.py
@@ -22,7 +22,7 @@ def strip_trailing_whitespace(self, text):
         return re.sub(pattern, '\n', text)
 
     def sample_file_contents(self):
-        return '''# Session Date: 2023-12-07
+        text = '''# Session Date: 2023-12-07
 
     ## Active Co-Authors   
     Co-Authored-By: Nathaniel Herman <nathaniel.herman@gmail.com>   
@@ -107,9 +107,21 @@ def sample_file_contents(self):
         - 3. consider a checklist for newcomers (was a discussion about this)
         - 4. consider items in the backlog (reminders, what are we working on, etc.
 '''
+        return self.strip_trailing_whitespace(text)
 
     def test_strip_trailing_whitespace(self):
-        text = self.sample_file_contents()
+        text = '''Line with trailing spaces        
+Line with trailing tabs
+    Line with 4 leading spaces
+        Line with 2 leading tabs
+Following line is empty
+
+Following line has 3 tabs
+            
+Following line has 4 spaces
+    
+This is last line.                
+'''
         stripped_text = self.strip_trailing_whitespace(text)
         verify(stripped_text)
 

From 9b944052dbc40629e890859f00a0ed675ce439e4 Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Thu, 14 Dec 2023 19:11:47 -0500
Subject: [PATCH 08/51] . t New test -
 test_sample_file_has_no_trailing_whitespace(self)

---
 tests/test_session_notes_cleaner.py | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/tests/test_session_notes_cleaner.py b/tests/test_session_notes_cleaner.py
index a29411b..576427b 100644
--- a/tests/test_session_notes_cleaner.py
+++ b/tests/test_session_notes_cleaner.py
@@ -125,6 +125,10 @@ def test_strip_trailing_whitespace(self):
         stripped_text = self.strip_trailing_whitespace(text)
         verify(stripped_text)
 
+    def test_sample_file_has_no_trailing_whitespace(self):
+        text = self.sample_file_contents()
+        stripped_text = self.strip_trailing_whitespace(text)
+        self.assertEquals(text, stripped_text)
 
 if __name__ == '__main__':
     unittest.main()

From 44c9e01e97d838f6212e8f4083d7b024e295bcb9 Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Thu, 14 Dec 2023 19:57:18 -0500
Subject: [PATCH 09/51] . t 2 new tests for inactive_coauthors

 - test_contains_inactive_coauthors(self):
 - def test_delete_inactive_coauthors(self):
---
 ...t_contains_inactive_coauthors.received.txt |  84 ++++++++
 tests/test_session_notes_cleaner.py           | 184 ++++++++++--------
 2 files changed, 182 insertions(+), 86 deletions(-)
 create mode 100644 tests/TestSessionNotesCleaner.test_contains_inactive_coauthors.received.txt

diff --git a/tests/TestSessionNotesCleaner.test_contains_inactive_coauthors.received.txt b/tests/TestSessionNotesCleaner.test_contains_inactive_coauthors.received.txt
new file mode 100644
index 0000000..dbf1a5a
--- /dev/null
+++ b/tests/TestSessionNotesCleaner.test_contains_inactive_coauthors.received.txt
@@ -0,0 +1,84 @@
+# Session Date: 2023-12-07
+
+    ## Active Co-Authors
+    Co-Authored-By: Nathaniel Herman <nathaniel.herman@gmail.com>
+    Co-Authored-By: Blaise Pabon <blaise@gmail.com>
+    Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
+    Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
+    Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
+    Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
+    Co-Authored-By: Nathaniel Herman <nathaniel.herman@gmail.com>
+
+
+    ## Inactive Co-Authors
+    Co-Authored-By: Blaise Pabon <blaise@gmail.com>
+    Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
+    Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
+    Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
+    Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
+    Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
+    Co-Authored-By: arrockt <cariari385@gmail.com>
+    Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
+    Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
+    Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
+    Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
+    Co-Authored-By: Idan Melamed <idanmel@gmail.com>
+    Co-Authored-By: Rea <reasu@protonmail.com>
+    Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
+    Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
+    Co-Authored-By: David Campey <campey@gmail.com>
+    Co-Authored-by: Zac Ball <zac156@gmail.com>
+    Co-Authored-By: Kitastro <admin@metafor.co.za>
+    Co-Authored-By: Woody Zuill <wzuill@yahoo.com>
+    Co-Authored-By: Llewellyn Falco <llewellyn.falco@gmail.com>
+
+    # Agenda
+
+    ## Bond (30 min.)
+
+    -   Try a [warmup exercise](../docs/warmup-exercises.md)
+
+    ## Do ?
+    FizzBuzz in Clojure
+    https://cyber-dojo.org/kata/edit/EtbGU6
+
+
+    ## Mid Session Retro (10 min.)
+    Tips:
+    - TRY FOR 10 MIN. LIMIT. HAVE A HELPER ALSO TIME. AT END OF TIME, VOTE TO EXTEND IF NEEDED ONLY
+    - Remember "Kindness, consideration and respect" - assume good intent; everyone is doing the best they can
+
+    How did that feel (1-2 words / 30 sec)?
+    - frustrating, fulfilling, overwhelmed
+    - exciting, playful
+    - curious, scared, fulfilled
+    - rocky, relieved
+    - resfreshing, collaborative
+
+    What did you like so much you want to do more of it / do it again?
+    - clojure
+    - everybody involved
+    - observation doing thinking for another person
+    - practicing thinking out loud +1
+    - Nn8 doing like a pro:
+      - I feel overwhelmed
+      - Modeled being honest and verbalizing where he was and what he was thinking.
+      - Stream of thought
+    - Modeling how we can get off track and on track
+    - Copying an old test case to create a new one
+
+    What might you want to try differently / experiment?
+    - Remind newcomers to enter their author info (eg. Co-Authored-By: Blaise Pabon <blaise@gmail.com>)
+
+    ## Do ?
+    Continue FizzBuzz in Clojure
+    https://cyber-dojo.org/kata/edit/EtbGU6
+
+    # 2nd Retro (END OF SESSION)
+
+    What to do next? Vote on Proposals:
+    - Proposals:
+        - 1. spending less time deciding on what we're doing (more time coding)
+        - 2. shared leadership, dedicated facilitation
+        - 3. consider a checklist for newcomers (was a discussion about this)
+        - 4. consider items in the backlog (reminders, what are we working on, etc.
diff --git a/tests/test_session_notes_cleaner.py b/tests/test_session_notes_cleaner.py
index 576427b..316b21f 100644
--- a/tests/test_session_notes_cleaner.py
+++ b/tests/test_session_notes_cleaner.py
@@ -15,6 +15,22 @@ def test_initialization(self):
     def test_import_approvalTests(self):
         verify("approvalTests::verify is imported\n")
 
+    def test_sample_file_has_no_trailing_whitespace(self):
+        text = self.sample_file_contents()
+        stripped_text = self.strip_trailing_whitespace(text)
+        self.assertEquals(text, stripped_text)
+
+    def test_contains_inactive_coauthors(self):
+        text = self.sample_file_contents()
+        cleaner = SessionNotesCleaner()
+        self.assertTrue(cleaner.contains_inactive_coauthors(text))
+
+    def test_delete_inactive_coauthors(self):
+        cleaner = SessionNotesCleaner()
+        text = self.sample_file_contents()
+        clean_text = cleaner.delete_inactive_coauthors(text)
+        verify(clean_text)
+
     def strip_trailing_whitespace(self, text):
         # Regular expression pattern to match trailing horizontal whitespace on each line, excluding newline
         pattern = r'[ \t]+\n'
@@ -24,88 +40,88 @@ def strip_trailing_whitespace(self, text):
     def sample_file_contents(self):
         text = '''# Session Date: 2023-12-07
 
-    ## Active Co-Authors   
-    Co-Authored-By: Nathaniel Herman <nathaniel.herman@gmail.com>   
-    Co-Authored-By: Blaise Pabon <blaise@gmail.com>         
-    Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>       
-    Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net> 
-    Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>   
-    Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
-    Co-Authored-By: Nathaniel Herman <nathaniel.herman@gmail.com>
-
-
-    ## Inactive Co-Authors
-    Co-Authored-By: Blaise Pabon <blaise@gmail.com>
-    Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
-    Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
-    Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
-    Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
-    Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
-    Co-Authored-By: arrockt <cariari385@gmail.com>
-    Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
-    Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
-    Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
-    Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
-    Co-Authored-By: Idan Melamed <idanmel@gmail.com>
-    Co-Authored-By: Rea <reasu@protonmail.com>
-    Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
-    Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
-    Co-Authored-By: David Campey <campey@gmail.com>
-    Co-Authored-by: Zac Ball <zac156@gmail.com>
-    Co-Authored-By: Kitastro <admin@metafor.co.za>
-    Co-Authored-By: Woody Zuill <wzuill@yahoo.com>
-    Co-Authored-By: Llewellyn Falco <llewellyn.falco@gmail.com>
-
-    # Agenda
-
-    ## Bond (30 min.)
-
-    -   Try a [warmup exercise](../docs/warmup-exercises.md)
-
-    ## Do ?
-    FizzBuzz in Clojure
-    https://cyber-dojo.org/kata/edit/EtbGU6
-
-
-    ## Mid Session Retro (10 min.)
-    Tips: 
-    - TRY FOR 10 MIN. LIMIT. HAVE A HELPER ALSO TIME. AT END OF TIME, VOTE TO EXTEND IF NEEDED ONLY
-    - Remember "Kindness, consideration and respect" - assume good intent; everyone is doing the best they can 
-
-    How did that feel (1-2 words / 30 sec)?
-    - frustrating, fulfilling, overwhelmed
-    - exciting, playful
-    - curious, scared, fulfilled
-    - rocky, relieved
-    - resfreshing, collaborative
-
-    What did you like so much you want to do more of it / do it again?
-    - clojure
-    - everybody involved
-    - observation doing thinking for another person
-    - practicing thinking out loud +1
-    - Nn8 doing like a pro:
-      - I feel overwhelmed
-      - Modeled being honest and verbalizing where he was and what he was thinking.
-      - Stream of thought
-    - Modeling how we can get off track and on track
-    - Copying an old test case to create a new one
-
-    What might you want to try differently / experiment?
-    - Remind newcomers to enter their author info (eg. Co-Authored-By: Blaise Pabon <blaise@gmail.com>)
-
-    ## Do ?
-    Continue FizzBuzz in Clojure
-    https://cyber-dojo.org/kata/edit/EtbGU6
-
-    # 2nd Retro (END OF SESSION)
-
-    What to do next? Vote on Proposals:
-    - Proposals:
-        - 1. spending less time deciding on what we're doing (more time coding)
-        - 2. shared leadership, dedicated facilitation
-        - 3. consider a checklist for newcomers (was a discussion about this)
-        - 4. consider items in the backlog (reminders, what are we working on, etc.
+## Active Co-Authors   
+Co-Authored-By: Nathaniel Herman <nathaniel.herman@gmail.com>   
+Co-Authored-By: Blaise Pabon <blaise@gmail.com>         
+Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>       
+Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net> 
+Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>   
+Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
+Co-Authored-By: Nathaniel Herman <nathaniel.herman@gmail.com>
+
+
+## Inactive Co-Authors
+Co-Authored-By: Blaise Pabon <blaise@gmail.com>
+Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
+Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
+Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
+Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
+Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
+Co-Authored-By: arrockt <cariari385@gmail.com>
+Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
+Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
+Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
+Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
+Co-Authored-By: Idan Melamed <idanmel@gmail.com>
+Co-Authored-By: Rea <reasu@protonmail.com>
+Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
+Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
+Co-Authored-By: David Campey <campey@gmail.com>
+Co-Authored-by: Zac Ball <zac156@gmail.com>
+Co-Authored-By: Kitastro <admin@metafor.co.za>
+Co-Authored-By: Woody Zuill <wzuill@yahoo.com>
+Co-Authored-By: Llewellyn Falco <llewellyn.falco@gmail.com>
+
+# Agenda
+
+## Bond (30 min.)
+
+-   Try a [warmup exercise](../docs/warmup-exercises.md)
+
+## Do ?
+FizzBuzz in Clojure
+https://cyber-dojo.org/kata/edit/EtbGU6
+
+
+## Mid Session Retro (10 min.)
+Tips: 
+- TRY FOR 10 MIN. LIMIT. HAVE A HELPER ALSO TIME. AT END OF TIME, VOTE TO EXTEND IF NEEDED ONLY
+- Remember "Kindness, consideration and respect" - assume good intent; everyone is doing the best they can 
+
+How did that feel (1-2 words / 30 sec)?
+- frustrating, fulfilling, overwhelmed
+- exciting, playful
+- curious, scared, fulfilled
+- rocky, relieved
+- resfreshing, collaborative
+
+What did you like so much you want to do more of it / do it again?
+- clojure
+- everybody involved
+- observation doing thinking for another person
+- practicing thinking out loud +1
+- Nn8 doing like a pro:
+  - I feel overwhelmed
+  - Modeled being honest and verbalizing where he was and what he was thinking.
+  - Stream of thought
+- Modeling how we can get off track and on track
+- Copying an old test case to create a new one
+
+What might you want to try differently / experiment?
+- Remind newcomers to enter their author info (eg. Co-Authored-By: Blaise Pabon <blaise@gmail.com>)
+
+## Do ?
+Continue FizzBuzz in Clojure
+https://cyber-dojo.org/kata/edit/EtbGU6
+
+# 2nd Retro (END OF SESSION)
+
+What to do next? Vote on Proposals:
+- Proposals:
+    - 1. spending less time deciding on what we're doing (more time coding)
+    - 2. shared leadership, dedicated facilitation
+    - 3. consider a checklist for newcomers (was a discussion about this)
+    - 4. consider items in the backlog (reminders, what are we working on, etc.
 '''
         return self.strip_trailing_whitespace(text)
 
@@ -125,10 +141,6 @@ def test_strip_trailing_whitespace(self):
         stripped_text = self.strip_trailing_whitespace(text)
         verify(stripped_text)
 
-    def test_sample_file_has_no_trailing_whitespace(self):
-        text = self.sample_file_contents()
-        stripped_text = self.strip_trailing_whitespace(text)
-        self.assertEquals(text, stripped_text)
 
 if __name__ == '__main__':
     unittest.main()

From 07c9fe3ce0b2c9c4c90680ed6fd099c398ca45b4 Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Thu, 14 Dec 2023 19:59:03 -0500
Subject: [PATCH 10/51] Delete session_notes_cleaner.py

---
 .../session_notes_cleaner.py                  | 85 -------------------
 1 file changed, 85 deletions(-)
 delete mode 100644 src/session_notes_cleanup/session_notes_cleaner.py

diff --git a/src/session_notes_cleanup/session_notes_cleaner.py b/src/session_notes_cleanup/session_notes_cleaner.py
deleted file mode 100644
index 5a83fa6..0000000
--- a/src/session_notes_cleanup/session_notes_cleaner.py
+++ /dev/null
@@ -1,85 +0,0 @@
-# Python code for the specified tasks
-
-import re
-import os
-import shutil
-import sys
-
-
-class SessionNotesCleaner:
-    def __init__(self):
-        pass
-
-
-def get_date_from_filename(filename):
-    match = re.search(r'(\d{4}-\d{2}-\d{2})', filename, re.IGNORECASE)
-    return match.group(1) if match else None
-
-
-def slurp_file(filename):
-    try:
-        with open(filename, 'r') as file:
-            return file.read()
-    except FileNotFoundError:
-        return None
-
-
-def contains_inactive_coauthors(contents):
-    return bool(re.search(r'^#+\s*Inactive Co-Authors', contents, re.IGNORECASE | re.MULTILINE))
-
-
-def contains_active_coauthors(contents):
-    return bool(re.search(r'^#+\s*Active Co-Authors', contents, re.IGNORECASE | re.MULTILINE))
-
-
-def contains_session_date(contents):
-    return bool(re.search(r'^#+\s*Session Date', contents, re.IGNORECASE | re.MULTILINE))
-
-
-def delete_inactive_coauthors(contents):
-    return re.sub(r'^#+\s*Inactive Co-Authors.*?(?=^#|\Z)', '', contents,
-                  flags=re.IGNORECASE | re.MULTILINE | re.DOTALL)
-
-
-def normalize_coauthor_heading(contents):
-    return re.sub(r'^#+\s*.*Co-Author.*', '## Co-Authors', contents, flags=re.IGNORECASE | re.MULTILINE)
-
-
-def cleanup_file(filename):
-    original_contents = slurp_file(filename)
-    if original_contents is None:
-        print(f"File not found: {filename}")
-        return
-
-    contents = original_contents
-    date_as_string = get_date_from_filename(filename)
-
-    if not contains_session_date(contents):
-        contents = f"# Session Date: {date_as_string}\n" + contents
-
-    if contains_active_coauthors(contents) and contains_inactive_coauthors(contents):
-        contents = delete_inactive_coauthors(contents)
-
-    contents = normalize_coauthor_heading(contents)
-
-    if contents == original_contents:
-        print(f"No changes were needed for the file: {filename}")
-    else:
-        print(f"Changes were made to the file: {filename}")
-        new_filename = filename + ".new"
-        with open(new_filename, 'w') as new_file:
-            new_file.write(contents)
-        shutil.copystat(filename, new_filename)
-        original_backup_filename = filename + ".original"
-        os.rename(filename, original_backup_filename)
-        os.rename(new_filename, filename)
-        print(f"You can view changes by issuing this command: diff -u {original_backup_filename} {filename}")
-
-
-def main():
-    for filename in sys.argv[1:]:
-        cleanup_file(filename)
-
-
-if __name__ == "__main__":
-    main()

From da1fedd1653e443532e1b9f873c76079eda92931 Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Thu, 14 Dec 2023 20:06:55 -0500
Subject: [PATCH 11/51] Revert "Delete session_notes_cleaner.py"

This reverts commit 07c9fe3ce0b2c9c4c90680ed6fd099c398ca45b4.
---
 .../session_notes_cleaner.py                  | 85 +++++++++++++++++++
 1 file changed, 85 insertions(+)
 create mode 100644 src/session_notes_cleanup/session_notes_cleaner.py

diff --git a/src/session_notes_cleanup/session_notes_cleaner.py b/src/session_notes_cleanup/session_notes_cleaner.py
new file mode 100644
index 0000000..5a83fa6
--- /dev/null
+++ b/src/session_notes_cleanup/session_notes_cleaner.py
@@ -0,0 +1,85 @@
+# Python code for the specified tasks
+
+import re
+import os
+import shutil
+import sys
+
+
+class SessionNotesCleaner:
+    def __init__(self):
+        pass
+
+
+def get_date_from_filename(filename):
+    match = re.search(r'(\d{4}-\d{2}-\d{2})', filename, re.IGNORECASE)
+    return match.group(1) if match else None
+
+
+def slurp_file(filename):
+    try:
+        with open(filename, 'r') as file:
+            return file.read()
+    except FileNotFoundError:
+        return None
+
+
+def contains_inactive_coauthors(contents):
+    return bool(re.search(r'^#+\s*Inactive Co-Authors', contents, re.IGNORECASE | re.MULTILINE))
+
+
+def contains_active_coauthors(contents):
+    return bool(re.search(r'^#+\s*Active Co-Authors', contents, re.IGNORECASE | re.MULTILINE))
+
+
+def contains_session_date(contents):
+    return bool(re.search(r'^#+\s*Session Date', contents, re.IGNORECASE | re.MULTILINE))
+
+
+def delete_inactive_coauthors(contents):
+    return re.sub(r'^#+\s*Inactive Co-Authors.*?(?=^#|\Z)', '', contents,
+                  flags=re.IGNORECASE | re.MULTILINE | re.DOTALL)
+
+
+def normalize_coauthor_heading(contents):
+    return re.sub(r'^#+\s*.*Co-Author.*', '## Co-Authors', contents, flags=re.IGNORECASE | re.MULTILINE)
+
+
+def cleanup_file(filename):
+    original_contents = slurp_file(filename)
+    if original_contents is None:
+        print(f"File not found: {filename}")
+        return
+
+    contents = original_contents
+    date_as_string = get_date_from_filename(filename)
+
+    if not contains_session_date(contents):
+        contents = f"# Session Date: {date_as_string}\n" + contents
+
+    if contains_active_coauthors(contents) and contains_inactive_coauthors(contents):
+        contents = delete_inactive_coauthors(contents)
+
+    contents = normalize_coauthor_heading(contents)
+
+    if contents == original_contents:
+        print(f"No changes were needed for the file: {filename}")
+    else:
+        print(f"Changes were made to the file: {filename}")
+        new_filename = filename + ".new"
+        with open(new_filename, 'w') as new_file:
+            new_file.write(contents)
+        shutil.copystat(filename, new_filename)
+        original_backup_filename = filename + ".original"
+        os.rename(filename, original_backup_filename)
+        os.rename(new_filename, filename)
+        print(f"You can view changes by issuing this command: diff -u {original_backup_filename} {filename}")
+
+
+def main():
+    for filename in sys.argv[1:]:
+        cleanup_file(filename)
+
+
+if __name__ == "__main__":
+    main()

From 9feb03d7ae1b56f87cd7dd57d77debd8a4761f05 Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Thu, 14 Dec 2023 20:22:05 -0500
Subject: [PATCH 12/51] . t Replace lost methods for inactive coauthors

---
 src/session_notes_cleanup/session_notes_cleaner.py | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/session_notes_cleanup/session_notes_cleaner.py b/src/session_notes_cleanup/session_notes_cleaner.py
index 5a83fa6..23928e4 100644
--- a/src/session_notes_cleanup/session_notes_cleaner.py
+++ b/src/session_notes_cleanup/session_notes_cleaner.py
@@ -10,6 +10,13 @@ class SessionNotesCleaner:
     def __init__(self):
         pass
 
+    def contains_inactive_coauthors(self, text):
+        return bool(re.search(r'^#+\s*Inactive Co-Authors', text, re.IGNORECASE | re.MULTILINE))
+
+    def delete_inactive_coauthors(self, text):
+        return re.sub(r'^#+\s*Inactive Co-Authors.*?(?=^#|\Z)', '', text,
+                      flags=re.IGNORECASE | re.MULTILINE | re.DOTALL)
+
 
 def get_date_from_filename(filename):
     match = re.search(r'(\d{4}-\d{2}-\d{2})', filename, re.IGNORECASE)

From 3e3440e98a088f4ea9faa361543d139c00e5fdff Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Thu, 14 Dec 2023 20:26:56 -0500
Subject: [PATCH 13/51] . t New test - test_contains_active_coauthors()

---
 src/session_notes_cleanup/session_notes_cleaner.py | 3 +++
 tests/test_session_notes_cleaner.py                | 5 +++++
 2 files changed, 8 insertions(+)

diff --git a/src/session_notes_cleanup/session_notes_cleaner.py b/src/session_notes_cleanup/session_notes_cleaner.py
index 23928e4..bdb352c 100644
--- a/src/session_notes_cleanup/session_notes_cleaner.py
+++ b/src/session_notes_cleanup/session_notes_cleaner.py
@@ -17,6 +17,9 @@ def delete_inactive_coauthors(self, text):
         return re.sub(r'^#+\s*Inactive Co-Authors.*?(?=^#|\Z)', '', text,
                       flags=re.IGNORECASE | re.MULTILINE | re.DOTALL)
 
+    def contains_active_coauthors(self, text):
+        return bool(re.search(r'^#+\s*Active Co-Authors', text, re.IGNORECASE | re.MULTILINE))
+
 
 def get_date_from_filename(filename):
     match = re.search(r'(\d{4}-\d{2}-\d{2})', filename, re.IGNORECASE)
diff --git a/tests/test_session_notes_cleaner.py b/tests/test_session_notes_cleaner.py
index 316b21f..e841cca 100644
--- a/tests/test_session_notes_cleaner.py
+++ b/tests/test_session_notes_cleaner.py
@@ -20,6 +20,11 @@ def test_sample_file_has_no_trailing_whitespace(self):
         stripped_text = self.strip_trailing_whitespace(text)
         self.assertEquals(text, stripped_text)
 
+    def test_contains_active_coauthors(self):
+        text = self.sample_file_contents()
+        cleaner = SessionNotesCleaner()
+        self.assertTrue(cleaner.contains_active_coauthors(text))
+
     def test_contains_inactive_coauthors(self):
         text = self.sample_file_contents()
         cleaner = SessionNotesCleaner()

From 6722e2d3308f17e0a2883495237a8765d7f07839 Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Thu, 14 Dec 2023 20:46:28 -0500
Subject: [PATCH 14/51] . t New - test_cleanup_contents(self):

---
 .../session_notes_cleaner.py                  | 25 +++++++++++++------
 tests/test_session_notes_cleaner.py           |  6 +++++
 2 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/src/session_notes_cleanup/session_notes_cleaner.py b/src/session_notes_cleanup/session_notes_cleaner.py
index bdb352c..fe17789 100644
--- a/src/session_notes_cleanup/session_notes_cleaner.py
+++ b/src/session_notes_cleanup/session_notes_cleaner.py
@@ -20,6 +20,14 @@ def delete_inactive_coauthors(self, text):
     def contains_active_coauthors(self, text):
         return bool(re.search(r'^#+\s*Active Co-Authors', text, re.IGNORECASE | re.MULTILINE))
 
+    def cleanup_contents(self, contents, param):
+        if not contains_session_date(contents):
+            contents = f"# Session Date: {param}\n" + contents
+        if contains_active_coauthors(contents) and contains_inactive_coauthors(contents):
+            contents = delete_inactive_coauthors(contents)
+        contents = normalize_coauthor_heading(contents)
+        return contents
+
 
 def get_date_from_filename(filename):
     match = re.search(r'(\d{4}-\d{2}-\d{2})', filename, re.IGNORECASE)
@@ -64,13 +72,7 @@ def cleanup_file(filename):
     contents = original_contents
     date_as_string = get_date_from_filename(filename)
 
-    if not contains_session_date(contents):
-        contents = f"# Session Date: {date_as_string}\n" + contents
-
-    if contains_active_coauthors(contents) and contains_inactive_coauthors(contents):
-        contents = delete_inactive_coauthors(contents)
-
-    contents = normalize_coauthor_heading(contents)
+    contents = applesauce(contents, date_as_string)
 
     if contents == original_contents:
         print(f"No changes were needed for the file: {filename}")
@@ -86,6 +88,15 @@ def cleanup_file(filename):
         print(f"You can view changes by issuing this command: diff -u {original_backup_filename} {filename}")
 
 
+def applesauce(contents, date_from_filename):
+    if not contains_session_date(contents):
+        contents = f"# Session Date: {date_from_filename}\n" + contents
+    if contains_active_coauthors(contents) and contains_inactive_coauthors(contents):
+        contents = delete_inactive_coauthors(contents)
+    contents = normalize_coauthor_heading(contents)
+    return contents
+
+
 def main():
     for filename in sys.argv[1:]:
         cleanup_file(filename)
diff --git a/tests/test_session_notes_cleaner.py b/tests/test_session_notes_cleaner.py
index e841cca..62da8c2 100644
--- a/tests/test_session_notes_cleaner.py
+++ b/tests/test_session_notes_cleaner.py
@@ -36,6 +36,12 @@ def test_delete_inactive_coauthors(self):
         clean_text = cleaner.delete_inactive_coauthors(text)
         verify(clean_text)
 
+    def test_cleanup_contents(self):
+        cleaner = SessionNotesCleaner()
+        text = self.sample_file_contents()
+        clean_text = cleaner.cleanup_contents(text, "2023-12-07")
+        verify(clean_text)
+
     def strip_trailing_whitespace(self, text):
         # Regular expression pattern to match trailing horizontal whitespace on each line, excluding newline
         pattern = r'[ \t]+\n'

From f4c4c817dba30b63e222883b19377f4c230fb01e Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Thu, 14 Dec 2023 20:53:37 -0500
Subject: [PATCH 15/51] . t New class method - normalize_coauthor_heading(self,
 contents)

---
 src/session_notes_cleanup/session_notes_cleaner.py | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/session_notes_cleanup/session_notes_cleaner.py b/src/session_notes_cleanup/session_notes_cleaner.py
index fe17789..5dc7054 100644
--- a/src/session_notes_cleanup/session_notes_cleaner.py
+++ b/src/session_notes_cleanup/session_notes_cleaner.py
@@ -23,11 +23,16 @@ def contains_active_coauthors(self, text):
     def cleanup_contents(self, contents, param):
         if not contains_session_date(contents):
             contents = f"# Session Date: {param}\n" + contents
-        if contains_active_coauthors(contents) and contains_inactive_coauthors(contents):
-            contents = delete_inactive_coauthors(contents)
-        contents = normalize_coauthor_heading(contents)
+        if self.contains_active_coauthors(contents) and self.contains_inactive_coauthors(contents):
+            contents = self.delete_inactive_coauthors(contents)
+        contents = self.normalize_coauthor_heading(contents)
         return contents
 
+    def normalize_coauthor_heading(self, contents):
+        return re.sub(r'^#+\s*.*Co-Author.*', '## Co-Authors',
+                      contents,
+                      flags=re.IGNORECASE | re.MULTILINE)
+
 
 def get_date_from_filename(filename):
     match = re.search(r'(\d{4}-\d{2}-\d{2})', filename, re.IGNORECASE)

From f53f5a3d9ce33c170bf1618787232f29fcfca03e Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Thu, 14 Dec 2023 20:55:24 -0500
Subject: [PATCH 16/51] . r Consistent parameter name - 'text'

---
 .../session_notes_cleaner.py                  | 20 +++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/src/session_notes_cleanup/session_notes_cleaner.py b/src/session_notes_cleanup/session_notes_cleaner.py
index 5dc7054..35744f3 100644
--- a/src/session_notes_cleanup/session_notes_cleaner.py
+++ b/src/session_notes_cleanup/session_notes_cleaner.py
@@ -20,17 +20,17 @@ def delete_inactive_coauthors(self, text):
     def contains_active_coauthors(self, text):
         return bool(re.search(r'^#+\s*Active Co-Authors', text, re.IGNORECASE | re.MULTILINE))
 
-    def cleanup_contents(self, contents, param):
-        if not contains_session_date(contents):
-            contents = f"# Session Date: {param}\n" + contents
-        if self.contains_active_coauthors(contents) and self.contains_inactive_coauthors(contents):
-            contents = self.delete_inactive_coauthors(contents)
-        contents = self.normalize_coauthor_heading(contents)
-        return contents
-
-    def normalize_coauthor_heading(self, contents):
+    def cleanup_contents(self, text, session_date):
+        if not contains_session_date(text):
+            text = f"# Session Date: {session_date}\n" + text
+        if self.contains_active_coauthors(text) and self.contains_inactive_coauthors(text):
+            text = self.delete_inactive_coauthors(text)
+        text = self.normalize_coauthor_heading(text)
+        return text
+
+    def normalize_coauthor_heading(self, text):
         return re.sub(r'^#+\s*.*Co-Author.*', '## Co-Authors',
-                      contents,
+                      text,
                       flags=re.IGNORECASE | re.MULTILINE)
 
 

From d82eb340d6cf3f86e062272e9f328ae392b3078a Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Thu, 14 Dec 2023 21:23:34 -0500
Subject: [PATCH 17/51] . r New - test_normalize_coauthor_heading(self)

---
 tests/test_session_notes_cleaner.py | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/tests/test_session_notes_cleaner.py b/tests/test_session_notes_cleaner.py
index 62da8c2..6c863c9 100644
--- a/tests/test_session_notes_cleaner.py
+++ b/tests/test_session_notes_cleaner.py
@@ -1,6 +1,7 @@
 # test_session_notes_cleaner.py
 import re
 import unittest
+
 from approvaltests import verify
 
 from src.session_notes_cleanup.session_notes_cleaner import SessionNotesCleaner
@@ -36,6 +37,13 @@ def test_delete_inactive_coauthors(self):
         clean_text = cleaner.delete_inactive_coauthors(text)
         verify(clean_text)
 
+    def test_normalize_coauthor_heading(self):
+        cleaner = SessionNotesCleaner()
+        text = "## Coauthors\n## Active Co-Authors\n## Today's Co-Authors\n## Co-Authors (today)\n"
+        clean_text = cleaner.normalize_coauthor_heading(text)
+        acceptance_text = f'Before\n{text}\n\nAfter\n{clean_text}'
+        verify(acceptance_text)
+
     def test_cleanup_contents(self):
         cleaner = SessionNotesCleaner()
         text = self.sample_file_contents()

From e419a694fd81a61b6b419dfa8087a1264adcf1fd Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Thu, 14 Dec 2023 21:23:59 -0500
Subject: [PATCH 18/51] . r Reformatting

---
 src/session_notes_cleanup/session_notes_cleaner.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/session_notes_cleanup/session_notes_cleaner.py b/src/session_notes_cleanup/session_notes_cleaner.py
index 35744f3..087112a 100644
--- a/src/session_notes_cleanup/session_notes_cleaner.py
+++ b/src/session_notes_cleanup/session_notes_cleaner.py
@@ -1,7 +1,7 @@
 # Python code for the specified tasks
 
-import re
 import os
+import re
 import shutil
 import sys
 
@@ -29,7 +29,7 @@ def cleanup_contents(self, text, session_date):
         return text
 
     def normalize_coauthor_heading(self, text):
-        return re.sub(r'^#+\s*.*Co-Author.*', '## Co-Authors',
+        return re.sub(r'^#+\s*.*Co-?Author.*', '## Co-Authors',
                       text,
                       flags=re.IGNORECASE | re.MULTILINE)
 

From bdd4f8e999716950aa0054917146d02b87b6badc Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <michael@Michaels-MacBook-2.local>
Date: Thu, 14 Dec 2023 21:26:15 -0500
Subject: [PATCH 19/51] . t Removed *received* file

---
 ...t_contains_inactive_coauthors.received.txt | 84 -------------------
 1 file changed, 84 deletions(-)
 delete mode 100644 tests/TestSessionNotesCleaner.test_contains_inactive_coauthors.received.txt

diff --git a/tests/TestSessionNotesCleaner.test_contains_inactive_coauthors.received.txt b/tests/TestSessionNotesCleaner.test_contains_inactive_coauthors.received.txt
deleted file mode 100644
index dbf1a5a..0000000
--- a/tests/TestSessionNotesCleaner.test_contains_inactive_coauthors.received.txt
+++ /dev/null
@@ -1,84 +0,0 @@
-# Session Date: 2023-12-07
-
-    ## Active Co-Authors
-    Co-Authored-By: Nathaniel Herman <nathaniel.herman@gmail.com>
-    Co-Authored-By: Blaise Pabon <blaise@gmail.com>
-    Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
-    Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
-    Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
-    Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
-    Co-Authored-By: Nathaniel Herman <nathaniel.herman@gmail.com>
-
-
-    ## Inactive Co-Authors
-    Co-Authored-By: Blaise Pabon <blaise@gmail.com>
-    Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
-    Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
-    Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
-    Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
-    Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
-    Co-Authored-By: arrockt <cariari385@gmail.com>
-    Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
-    Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
-    Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
-    Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
-    Co-Authored-By: Idan Melamed <idanmel@gmail.com>
-    Co-Authored-By: Rea <reasu@protonmail.com>
-    Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
-    Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
-    Co-Authored-By: David Campey <campey@gmail.com>
-    Co-Authored-by: Zac Ball <zac156@gmail.com>
-    Co-Authored-By: Kitastro <admin@metafor.co.za>
-    Co-Authored-By: Woody Zuill <wzuill@yahoo.com>
-    Co-Authored-By: Llewellyn Falco <llewellyn.falco@gmail.com>
-
-    # Agenda
-
-    ## Bond (30 min.)
-
-    -   Try a [warmup exercise](../docs/warmup-exercises.md)
-
-    ## Do ?
-    FizzBuzz in Clojure
-    https://cyber-dojo.org/kata/edit/EtbGU6
-
-
-    ## Mid Session Retro (10 min.)
-    Tips:
-    - TRY FOR 10 MIN. LIMIT. HAVE A HELPER ALSO TIME. AT END OF TIME, VOTE TO EXTEND IF NEEDED ONLY
-    - Remember "Kindness, consideration and respect" - assume good intent; everyone is doing the best they can
-
-    How did that feel (1-2 words / 30 sec)?
-    - frustrating, fulfilling, overwhelmed
-    - exciting, playful
-    - curious, scared, fulfilled
-    - rocky, relieved
-    - resfreshing, collaborative
-
-    What did you like so much you want to do more of it / do it again?
-    - clojure
-    - everybody involved
-    - observation doing thinking for another person
-    - practicing thinking out loud +1
-    - Nn8 doing like a pro:
-      - I feel overwhelmed
-      - Modeled being honest and verbalizing where he was and what he was thinking.
-      - Stream of thought
-    - Modeling how we can get off track and on track
-    - Copying an old test case to create a new one
-
-    What might you want to try differently / experiment?
-    - Remind newcomers to enter their author info (eg. Co-Authored-By: Blaise Pabon <blaise@gmail.com>)
-
-    ## Do ?
-    Continue FizzBuzz in Clojure
-    https://cyber-dojo.org/kata/edit/EtbGU6
-
-    # 2nd Retro (END OF SESSION)
-
-    What to do next? Vote on Proposals:
-    - Proposals:
-        - 1. spending less time deciding on what we're doing (more time coding)
-        - 2. shared leadership, dedicated facilitation
-        - 3. consider a checklist for newcomers (was a discussion about this)
-        - 4. consider items in the backlog (reminders, what are we working on, etc.

From 498b86e94862624fbfa59a991f8fb04f26bf1d1c Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Thu, 14 Dec 2023 21:44:35 -0500
Subject: [PATCH 20/51] . r Use assertEqual instead of assertEquals

---
 tests/test_session_notes_cleaner.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/test_session_notes_cleaner.py b/tests/test_session_notes_cleaner.py
index 6c863c9..166ddc7 100644
--- a/tests/test_session_notes_cleaner.py
+++ b/tests/test_session_notes_cleaner.py
@@ -19,7 +19,7 @@ def test_import_approvalTests(self):
     def test_sample_file_has_no_trailing_whitespace(self):
         text = self.sample_file_contents()
         stripped_text = self.strip_trailing_whitespace(text)
-        self.assertEquals(text, stripped_text)
+        self.assertEqual(text, stripped_text)
 
     def test_contains_active_coauthors(self):
         text = self.sample_file_contents()

From 09eb491e6672837fdf507b392043d2266f1e0664 Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Thu, 14 Dec 2023 21:48:01 -0500
Subject: [PATCH 21/51] . f @staticmethod strip_trailing_whitespace(text)

---
 tests/test_session_notes_cleaner.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tests/test_session_notes_cleaner.py b/tests/test_session_notes_cleaner.py
index 166ddc7..80445ac 100644
--- a/tests/test_session_notes_cleaner.py
+++ b/tests/test_session_notes_cleaner.py
@@ -50,7 +50,8 @@ def test_cleanup_contents(self):
         clean_text = cleaner.cleanup_contents(text, "2023-12-07")
         verify(clean_text)
 
-    def strip_trailing_whitespace(self, text):
+    @staticmethod
+    def strip_trailing_whitespace(text):
         # Regular expression pattern to match trailing horizontal whitespace on each line, excluding newline
         pattern = r'[ \t]+\n'
         # Replace matched patterns with nothing (i.e., remove them)

From 5e0deb9f45b8ee6d04bbea9565520d12930c19fe Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Thu, 14 Dec 2023 22:19:25 -0500
Subject: [PATCH 22/51] . r Rename all functions to fn_*.  Move cleanup_file()
 into class.

---
 .../session_notes_cleaner.py                  | 68 ++++++++++++-------
 1 file changed, 42 insertions(+), 26 deletions(-)

diff --git a/src/session_notes_cleanup/session_notes_cleaner.py b/src/session_notes_cleanup/session_notes_cleaner.py
index 087112a..bc5f237 100644
--- a/src/session_notes_cleanup/session_notes_cleaner.py
+++ b/src/session_notes_cleanup/session_notes_cleaner.py
@@ -21,7 +21,7 @@ def contains_active_coauthors(self, text):
         return bool(re.search(r'^#+\s*Active Co-Authors', text, re.IGNORECASE | re.MULTILINE))
 
     def cleanup_contents(self, text, session_date):
-        if not contains_session_date(text):
+        if not fn_contains_session_date(text):
             text = f"# Session Date: {session_date}\n" + text
         if self.contains_active_coauthors(text) and self.contains_inactive_coauthors(text):
             text = self.delete_inactive_coauthors(text)
@@ -33,13 +33,35 @@ def normalize_coauthor_heading(self, text):
                       text,
                       flags=re.IGNORECASE | re.MULTILINE)
 
+    def cleanup_file(self, filename):
+        original_contents = fn_slurp_file(filename)
+        if original_contents is None:
+            print(f"File not found: {filename}")
+            return
+
+        contents = original_contents
+        date_as_string = get_date_from_filename(filename)
+        contents = self.cleanup_contents(contents, date_as_string)
+        if contents == original_contents:
+            print(f"No changes were needed for the file: {filename}")
+        else:
+            print(f"Changes were made to the file: {filename}")
+            new_filename = filename + ".new"
+            with open(new_filename, 'w') as new_file:
+                new_file.write(contents)
+            shutil.copystat(filename, new_filename)
+            original_backup_filename = filename + ".original"
+            os.rename(filename, original_backup_filename)
+            os.rename(new_filename, filename)
+            print(f"You can view changes by issuing this command: diff -u {original_backup_filename} {filename}")
+
 
 def get_date_from_filename(filename):
     match = re.search(r'(\d{4}-\d{2}-\d{2})', filename, re.IGNORECASE)
     return match.group(1) if match else None
 
 
-def slurp_file(filename):
+def fn_slurp_file(filename):
     try:
         with open(filename, 'r') as file:
             return file.read()
@@ -47,38 +69,31 @@ def slurp_file(filename):
         return None
 
 
-def contains_inactive_coauthors(contents):
-    return bool(re.search(r'^#+\s*Inactive Co-Authors', contents, re.IGNORECASE | re.MULTILINE))
-
-
-def contains_active_coauthors(contents):
-    return bool(re.search(r'^#+\s*Active Co-Authors', contents, re.IGNORECASE | re.MULTILINE))
+# def fn_contains_inactive_coauthors(contents):
+#     return bool(re.search(r'^#+\s*Inactive Co-Authors', contents, re.IGNORECASE | re.MULTILINE))
+#
+#
+# def fn_contains_active_coauthors(contents):
+#     return bool(re.search(r'^#+\s*Active Co-Authors', contents, re.IGNORECASE | re.MULTILINE))
 
 
-def contains_session_date(contents):
+def fn_contains_session_date(contents):
     return bool(re.search(r'^#+\s*Session Date', contents, re.IGNORECASE | re.MULTILINE))
 
 
-def delete_inactive_coauthors(contents):
+def fn_delete_inactive_coauthors(contents):
     return re.sub(r'^#+\s*Inactive Co-Authors.*?(?=^#|\Z)', '', contents,
                   flags=re.IGNORECASE | re.MULTILINE | re.DOTALL)
 
 
-def normalize_coauthor_heading(contents):
+def fn_normalize_coauthor_heading(contents):
     return re.sub(r'^#+\s*.*Co-Author.*', '## Co-Authors', contents, flags=re.IGNORECASE | re.MULTILINE)
 
 
-def cleanup_file(filename):
-    original_contents = slurp_file(filename)
-    if original_contents is None:
-        print(f"File not found: {filename}")
-        return
-
+def method_name(filename, original_contents):
     contents = original_contents
     date_as_string = get_date_from_filename(filename)
-
-    contents = applesauce(contents, date_as_string)
-
+    contents = fn_applesauce(contents, date_as_string)
     if contents == original_contents:
         print(f"No changes were needed for the file: {filename}")
     else:
@@ -93,18 +108,19 @@ def cleanup_file(filename):
         print(f"You can view changes by issuing this command: diff -u {original_backup_filename} {filename}")
 
 
-def applesauce(contents, date_from_filename):
-    if not contains_session_date(contents):
+def fn_applesauce(contents, date_from_filename):
+    if not fn_contains_session_date(contents):
         contents = f"# Session Date: {date_from_filename}\n" + contents
-    if contains_active_coauthors(contents) and contains_inactive_coauthors(contents):
-        contents = delete_inactive_coauthors(contents)
-    contents = normalize_coauthor_heading(contents)
+    if fn_contains_active_coauthors(contents) and fn_contains_inactive_coauthors(contents):
+        contents = fn_delete_inactive_coauthors(contents)
+    contents = fn_normalize_coauthor_heading(contents)
     return contents
 
 
 def main():
+    cleaner = SessionNotesCleaner()
     for filename in sys.argv[1:]:
-        cleanup_file(filename)
+        cleaner.cleanup_file(filename)
 
 
 if __name__ == "__main__":

From e1fbe841eacbc595415cccd42946d9b768ed416a Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Thu, 14 Dec 2023 22:25:50 -0500
Subject: [PATCH 23/51] . r Move into class - get_date_from_filename()

---
 src/session_notes_cleanup/session_notes_cleaner.py | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/session_notes_cleanup/session_notes_cleaner.py b/src/session_notes_cleanup/session_notes_cleaner.py
index bc5f237..a8a1e24 100644
--- a/src/session_notes_cleanup/session_notes_cleaner.py
+++ b/src/session_notes_cleanup/session_notes_cleaner.py
@@ -40,7 +40,7 @@ def cleanup_file(self, filename):
             return
 
         contents = original_contents
-        date_as_string = get_date_from_filename(filename)
+        date_as_string = self.get_date_from_filename(filename)
         contents = self.cleanup_contents(contents, date_as_string)
         if contents == original_contents:
             print(f"No changes were needed for the file: {filename}")
@@ -55,10 +55,9 @@ def cleanup_file(self, filename):
             os.rename(new_filename, filename)
             print(f"You can view changes by issuing this command: diff -u {original_backup_filename} {filename}")
 
-
-def get_date_from_filename(filename):
-    match = re.search(r'(\d{4}-\d{2}-\d{2})', filename, re.IGNORECASE)
-    return match.group(1) if match else None
+    def get_date_from_filename(self, filename):
+        match = re.search(r'(\d{4}-\d{2}-\d{2})', filename, re.IGNORECASE)
+        return match.group(1) if match else None
 
 
 def fn_slurp_file(filename):
@@ -92,7 +91,7 @@ def fn_normalize_coauthor_heading(contents):
 
 def method_name(filename, original_contents):
     contents = original_contents
-    date_as_string = get_date_from_filename(filename)
+    date_as_string = SessionNotesCleaner().get_date_from_filename(filename)
     contents = fn_applesauce(contents, date_as_string)
     if contents == original_contents:
         print(f"No changes were needed for the file: {filename}")
@@ -111,7 +110,8 @@ def method_name(filename, original_contents):
 def fn_applesauce(contents, date_from_filename):
     if not fn_contains_session_date(contents):
         contents = f"# Session Date: {date_from_filename}\n" + contents
-    if fn_contains_active_coauthors(contents) and fn_contains_inactive_coauthors(contents):
+    if SessionNotesCleaner().contains_active_coauthors(contents) and \
+            SessionNotesCleaner().contains_inactive_coauthors(contents):
         contents = fn_delete_inactive_coauthors(contents)
     contents = fn_normalize_coauthor_heading(contents)
     return contents

From 83db980670328e9a6046f09ab9225dd5d2fe1fed Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Thu, 14 Dec 2023 22:27:12 -0500
Subject: [PATCH 24/51] ! r Remove dead code

---
 src/session_notes_cleanup/session_notes_cleaner.py | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/src/session_notes_cleanup/session_notes_cleaner.py b/src/session_notes_cleanup/session_notes_cleaner.py
index a8a1e24..a806c6d 100644
--- a/src/session_notes_cleanup/session_notes_cleaner.py
+++ b/src/session_notes_cleanup/session_notes_cleaner.py
@@ -68,14 +68,6 @@ def fn_slurp_file(filename):
         return None
 
 
-# def fn_contains_inactive_coauthors(contents):
-#     return bool(re.search(r'^#+\s*Inactive Co-Authors', contents, re.IGNORECASE | re.MULTILINE))
-#
-#
-# def fn_contains_active_coauthors(contents):
-#     return bool(re.search(r'^#+\s*Active Co-Authors', contents, re.IGNORECASE | re.MULTILINE))
-
-
 def fn_contains_session_date(contents):
     return bool(re.search(r'^#+\s*Session Date', contents, re.IGNORECASE | re.MULTILINE))
 

From 7bc45017b484116dbc92b0bf087fdea6054f50d0 Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Thu, 14 Dec 2023 22:31:40 -0500
Subject: [PATCH 25/51] . r Move into class - contains_session_date(self,
 contents)

---
 src/session_notes_cleanup/session_notes_cleaner.py | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/src/session_notes_cleanup/session_notes_cleaner.py b/src/session_notes_cleanup/session_notes_cleaner.py
index a806c6d..036e9e9 100644
--- a/src/session_notes_cleanup/session_notes_cleaner.py
+++ b/src/session_notes_cleanup/session_notes_cleaner.py
@@ -21,7 +21,7 @@ def contains_active_coauthors(self, text):
         return bool(re.search(r'^#+\s*Active Co-Authors', text, re.IGNORECASE | re.MULTILINE))
 
     def cleanup_contents(self, text, session_date):
-        if not fn_contains_session_date(text):
+        if not self.contains_session_date(text):
             text = f"# Session Date: {session_date}\n" + text
         if self.contains_active_coauthors(text) and self.contains_inactive_coauthors(text):
             text = self.delete_inactive_coauthors(text)
@@ -33,6 +33,9 @@ def normalize_coauthor_heading(self, text):
                       text,
                       flags=re.IGNORECASE | re.MULTILINE)
 
+    def contains_session_date(self, contents):
+        return bool(re.search(r'^#+\s*Session Date', contents, re.IGNORECASE | re.MULTILINE))
+
     def cleanup_file(self, filename):
         original_contents = fn_slurp_file(filename)
         if original_contents is None:
@@ -68,10 +71,6 @@ def fn_slurp_file(filename):
         return None
 
 
-def fn_contains_session_date(contents):
-    return bool(re.search(r'^#+\s*Session Date', contents, re.IGNORECASE | re.MULTILINE))
-
-
 def fn_delete_inactive_coauthors(contents):
     return re.sub(r'^#+\s*Inactive Co-Authors.*?(?=^#|\Z)', '', contents,
                   flags=re.IGNORECASE | re.MULTILINE | re.DOTALL)
@@ -100,7 +99,7 @@ def method_name(filename, original_contents):
 
 
 def fn_applesauce(contents, date_from_filename):
-    if not fn_contains_session_date(contents):
+    if not SessionNotesCleaner().contains_session_date(contents):
         contents = f"# Session Date: {date_from_filename}\n" + contents
     if SessionNotesCleaner().contains_active_coauthors(contents) and \
             SessionNotesCleaner().contains_inactive_coauthors(contents):

From 13aec609de221cc95fe446776f9ccbbcc37f14ce Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Thu, 14 Dec 2023 22:33:44 -0500
Subject: [PATCH 26/51] . r Move into class - slurp_file(self, filename)

---
 .../session_notes_cleaner.py                      | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/src/session_notes_cleanup/session_notes_cleaner.py b/src/session_notes_cleanup/session_notes_cleaner.py
index 036e9e9..1615738 100644
--- a/src/session_notes_cleanup/session_notes_cleaner.py
+++ b/src/session_notes_cleanup/session_notes_cleaner.py
@@ -37,7 +37,7 @@ def contains_session_date(self, contents):
         return bool(re.search(r'^#+\s*Session Date', contents, re.IGNORECASE | re.MULTILINE))
 
     def cleanup_file(self, filename):
-        original_contents = fn_slurp_file(filename)
+        original_contents = SessionNotesCleaner().slurp_file(filename)
         if original_contents is None:
             print(f"File not found: {filename}")
             return
@@ -62,13 +62,12 @@ def get_date_from_filename(self, filename):
         match = re.search(r'(\d{4}-\d{2}-\d{2})', filename, re.IGNORECASE)
         return match.group(1) if match else None
 
-
-def fn_slurp_file(filename):
-    try:
-        with open(filename, 'r') as file:
-            return file.read()
-    except FileNotFoundError:
-        return None
+    def slurp_file(self, filename):
+        try:
+            with open(filename, 'r') as file:
+                return file.read()
+        except FileNotFoundError:
+            return None
 
 
 def fn_delete_inactive_coauthors(contents):

From 4154f0f21b8986f14f76f58e1adb76643bade94a Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Thu, 14 Dec 2023 22:35:48 -0500
Subject: [PATCH 27/51] . r Move into class - delete_inactive_coauthors(self,
 text)

---
 src/session_notes_cleanup/session_notes_cleaner.py | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/src/session_notes_cleanup/session_notes_cleaner.py b/src/session_notes_cleanup/session_notes_cleaner.py
index 1615738..95a8845 100644
--- a/src/session_notes_cleanup/session_notes_cleaner.py
+++ b/src/session_notes_cleanup/session_notes_cleaner.py
@@ -70,11 +70,6 @@ def slurp_file(self, filename):
             return None
 
 
-def fn_delete_inactive_coauthors(contents):
-    return re.sub(r'^#+\s*Inactive Co-Authors.*?(?=^#|\Z)', '', contents,
-                  flags=re.IGNORECASE | re.MULTILINE | re.DOTALL)
-
-
 def fn_normalize_coauthor_heading(contents):
     return re.sub(r'^#+\s*.*Co-Author.*', '## Co-Authors', contents, flags=re.IGNORECASE | re.MULTILINE)
 
@@ -102,7 +97,7 @@ def fn_applesauce(contents, date_from_filename):
         contents = f"# Session Date: {date_from_filename}\n" + contents
     if SessionNotesCleaner().contains_active_coauthors(contents) and \
             SessionNotesCleaner().contains_inactive_coauthors(contents):
-        contents = fn_delete_inactive_coauthors(contents)
+        contents = SessionNotesCleaner().delete_inactive_coauthors(contents)
     contents = fn_normalize_coauthor_heading(contents)
     return contents
 

From 2243b290ce2340f8372884846e73b78bbcb0f320 Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Thu, 14 Dec 2023 22:38:30 -0500
Subject: [PATCH 28/51] . r Remove dead code

---
 .../session_notes_cleaner.py                  | 32 -------------------
 1 file changed, 32 deletions(-)

diff --git a/src/session_notes_cleanup/session_notes_cleaner.py b/src/session_notes_cleanup/session_notes_cleaner.py
index 95a8845..66e75b5 100644
--- a/src/session_notes_cleanup/session_notes_cleaner.py
+++ b/src/session_notes_cleanup/session_notes_cleaner.py
@@ -70,38 +70,6 @@ def slurp_file(self, filename):
             return None
 
 
-def fn_normalize_coauthor_heading(contents):
-    return re.sub(r'^#+\s*.*Co-Author.*', '## Co-Authors', contents, flags=re.IGNORECASE | re.MULTILINE)
-
-
-def method_name(filename, original_contents):
-    contents = original_contents
-    date_as_string = SessionNotesCleaner().get_date_from_filename(filename)
-    contents = fn_applesauce(contents, date_as_string)
-    if contents == original_contents:
-        print(f"No changes were needed for the file: {filename}")
-    else:
-        print(f"Changes were made to the file: {filename}")
-        new_filename = filename + ".new"
-        with open(new_filename, 'w') as new_file:
-            new_file.write(contents)
-        shutil.copystat(filename, new_filename)
-        original_backup_filename = filename + ".original"
-        os.rename(filename, original_backup_filename)
-        os.rename(new_filename, filename)
-        print(f"You can view changes by issuing this command: diff -u {original_backup_filename} {filename}")
-
-
-def fn_applesauce(contents, date_from_filename):
-    if not SessionNotesCleaner().contains_session_date(contents):
-        contents = f"# Session Date: {date_from_filename}\n" + contents
-    if SessionNotesCleaner().contains_active_coauthors(contents) and \
-            SessionNotesCleaner().contains_inactive_coauthors(contents):
-        contents = SessionNotesCleaner().delete_inactive_coauthors(contents)
-    contents = fn_normalize_coauthor_heading(contents)
-    return contents
-
-
 def main():
     cleaner = SessionNotesCleaner()
     for filename in sys.argv[1:]:

From 6045453aa0227525c17011386152fd0c3450a664 Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Thu, 14 Dec 2023 22:42:42 -0500
Subject: [PATCH 29/51] . r Reorder methods.

---
 .../session_notes_cleaner.py                   | 18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

diff --git a/src/session_notes_cleanup/session_notes_cleaner.py b/src/session_notes_cleanup/session_notes_cleaner.py
index 66e75b5..3e0db6d 100644
--- a/src/session_notes_cleanup/session_notes_cleaner.py
+++ b/src/session_notes_cleanup/session_notes_cleaner.py
@@ -1,5 +1,3 @@
-# Python code for the specified tasks
-
 import os
 import re
 import shutil
@@ -20,14 +18,6 @@ def delete_inactive_coauthors(self, text):
     def contains_active_coauthors(self, text):
         return bool(re.search(r'^#+\s*Active Co-Authors', text, re.IGNORECASE | re.MULTILINE))
 
-    def cleanup_contents(self, text, session_date):
-        if not self.contains_session_date(text):
-            text = f"# Session Date: {session_date}\n" + text
-        if self.contains_active_coauthors(text) and self.contains_inactive_coauthors(text):
-            text = self.delete_inactive_coauthors(text)
-        text = self.normalize_coauthor_heading(text)
-        return text
-
     def normalize_coauthor_heading(self, text):
         return re.sub(r'^#+\s*.*Co-?Author.*', '## Co-Authors',
                       text,
@@ -36,6 +26,14 @@ def normalize_coauthor_heading(self, text):
     def contains_session_date(self, contents):
         return bool(re.search(r'^#+\s*Session Date', contents, re.IGNORECASE | re.MULTILINE))
 
+    def cleanup_contents(self, text, session_date):
+        if not self.contains_session_date(text):
+            text = f"# Session Date: {session_date}\n" + text
+        if self.contains_active_coauthors(text) and self.contains_inactive_coauthors(text):
+            text = self.delete_inactive_coauthors(text)
+        text = self.normalize_coauthor_heading(text)
+        return text
+
     def cleanup_file(self, filename):
         original_contents = SessionNotesCleaner().slurp_file(filename)
         if original_contents is None:

From faa7e82cd2e4fc4662522b0039a44f1d481ca66f Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Thu, 14 Dec 2023 22:44:00 -0500
Subject: [PATCH 30/51] . r Reorder methods.

---
 .../session_notes_cleaner.py                  | 26 +++++++++----------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/src/session_notes_cleanup/session_notes_cleaner.py b/src/session_notes_cleanup/session_notes_cleaner.py
index 3e0db6d..17e491b 100644
--- a/src/session_notes_cleanup/session_notes_cleaner.py
+++ b/src/session_notes_cleanup/session_notes_cleaner.py
@@ -23,8 +23,19 @@ def normalize_coauthor_heading(self, text):
                       text,
                       flags=re.IGNORECASE | re.MULTILINE)
 
-    def contains_session_date(self, contents):
-        return bool(re.search(r'^#+\s*Session Date', contents, re.IGNORECASE | re.MULTILINE))
+    def get_date_from_filename(self, filename):
+        match = re.search(r'(\d{4}-\d{2}-\d{2})', filename, re.IGNORECASE)
+        return match.group(1) if match else None
+
+    def slurp_file(self, filename):
+        try:
+            with open(filename, 'r') as file:
+                return file.read()
+        except FileNotFoundError:
+            return None
+
+    def contains_session_date(self, text):
+        return bool(re.search(r'^#+\s*Session Date', text, re.IGNORECASE | re.MULTILINE))
 
     def cleanup_contents(self, text, session_date):
         if not self.contains_session_date(text):
@@ -56,17 +67,6 @@ def cleanup_file(self, filename):
             os.rename(new_filename, filename)
             print(f"You can view changes by issuing this command: diff -u {original_backup_filename} {filename}")
 
-    def get_date_from_filename(self, filename):
-        match = re.search(r'(\d{4}-\d{2}-\d{2})', filename, re.IGNORECASE)
-        return match.group(1) if match else None
-
-    def slurp_file(self, filename):
-        try:
-            with open(filename, 'r') as file:
-                return file.read()
-        except FileNotFoundError:
-            return None
-
 
 def main():
     cleaner = SessionNotesCleaner()

From 4536d454ab50edac62ee020b10a8bccf272007e7 Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Thu, 14 Dec 2023 22:46:21 -0500
Subject: [PATCH 31/51] . r Rename method to:
 standardize_coauthor_heading(self, text)

---
 src/session_notes_cleanup/session_notes_cleaner.py | 4 ++--
 tests/test_session_notes_cleaner.py                | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/session_notes_cleanup/session_notes_cleaner.py b/src/session_notes_cleanup/session_notes_cleaner.py
index 17e491b..97b408a 100644
--- a/src/session_notes_cleanup/session_notes_cleaner.py
+++ b/src/session_notes_cleanup/session_notes_cleaner.py
@@ -18,7 +18,7 @@ def delete_inactive_coauthors(self, text):
     def contains_active_coauthors(self, text):
         return bool(re.search(r'^#+\s*Active Co-Authors', text, re.IGNORECASE | re.MULTILINE))
 
-    def normalize_coauthor_heading(self, text):
+    def standardize_coauthor_heading(self, text):
         return re.sub(r'^#+\s*.*Co-?Author.*', '## Co-Authors',
                       text,
                       flags=re.IGNORECASE | re.MULTILINE)
@@ -42,7 +42,7 @@ def cleanup_contents(self, text, session_date):
             text = f"# Session Date: {session_date}\n" + text
         if self.contains_active_coauthors(text) and self.contains_inactive_coauthors(text):
             text = self.delete_inactive_coauthors(text)
-        text = self.normalize_coauthor_heading(text)
+        text = self.standardize_coauthor_heading(text)
         return text
 
     def cleanup_file(self, filename):
diff --git a/tests/test_session_notes_cleaner.py b/tests/test_session_notes_cleaner.py
index 80445ac..414fa01 100644
--- a/tests/test_session_notes_cleaner.py
+++ b/tests/test_session_notes_cleaner.py
@@ -40,7 +40,7 @@ def test_delete_inactive_coauthors(self):
     def test_normalize_coauthor_heading(self):
         cleaner = SessionNotesCleaner()
         text = "## Coauthors\n## Active Co-Authors\n## Today's Co-Authors\n## Co-Authors (today)\n"
-        clean_text = cleaner.normalize_coauthor_heading(text)
+        clean_text = cleaner.standardize_coauthor_heading(text)
         acceptance_text = f'Before\n{text}\n\nAfter\n{clean_text}'
         verify(acceptance_text)
 

From 16969b35038e61eda0a98afe805da4db66971e5a Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Thu, 14 Dec 2023 23:42:45 -0500
Subject: [PATCH 32/51] Update doit

. t Update helper function 'doit' with new project structure
---
 src/session_notes_cleanup/doit | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/src/session_notes_cleanup/doit b/src/session_notes_cleanup/doit
index 01b569f..d2a93aa 100644
--- a/src/session_notes_cleanup/doit
+++ b/src/session_notes_cleanup/doit
@@ -2,11 +2,8 @@
 
 git_toplevel="$(git rev-parse --show-toplevel)"
 note_directory="${git_toplevel}/session-notes"
-script_directory="${note_directory}/cleanup-notes"
-script_path="${script_directory}/cleanup_session_notes.py"
-
-cd  "${note_directory}" || exit 2
-
+script_directory="${git_toplevel}/src/session_notes_cleanup"
+script_path="${script_directory}/session_notes_cleaner.py"
 
 
 for arg in "$@"
@@ -18,7 +15,7 @@ do
 	filename="$arg"
     fi
 
-    . "${script_directory}/venv/bin/activate" || exit 3
+    # . "${git_toplevel}/venv/bin/activate" || exit 3
 
     python "${script_path}" "${filename}"
 done

From 25d117141d73e039e46e7440b1582b916e7fa8a7 Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Thu, 14 Dec 2023 23:43:53 -0500
Subject: [PATCH 33/51] . t New - test_remove_coauthor_headings()

---
 .../session_notes_cleaner.py                  | 21 ++++++++++++++++---
 tests/test_session_notes_cleaner.py           |  9 +++++++-
 2 files changed, 26 insertions(+), 4 deletions(-)

diff --git a/src/session_notes_cleanup/session_notes_cleaner.py b/src/session_notes_cleanup/session_notes_cleaner.py
index 97b408a..8d01518 100644
--- a/src/session_notes_cleanup/session_notes_cleaner.py
+++ b/src/session_notes_cleanup/session_notes_cleaner.py
@@ -23,6 +23,21 @@ def standardize_coauthor_heading(self, text):
                       text,
                       flags=re.IGNORECASE | re.MULTILINE)
 
+    import re
+
+    def remove_coauthor_headings(self, text):
+        # Regular expression to match 1st and 2nd level headings with "Co-Authors"
+        # Assumes Markdown formatting where 1st level is '# ' and 2nd level is '## '
+        standard_text = self.standardize_coauthor_heading(text)
+        pattern = r'^#{1,2}\s*Co-Authors.*$\n?'
+        cleaned_text = re.sub(pattern, '', standard_text, flags=re.MULTILINE)
+
+        return cleaned_text
+
+    def applesauce(self, text):
+        pattern = r'^#+\s*Co-Author$'
+        re.sub(pattern, text,flags=re.IGNORECASE )
+
     def get_date_from_filename(self, filename):
         match = re.search(r'(\d{4}-\d{2}-\d{2})', filename, re.IGNORECASE)
         return match.group(1) if match else None
@@ -55,9 +70,9 @@ def cleanup_file(self, filename):
         date_as_string = self.get_date_from_filename(filename)
         contents = self.cleanup_contents(contents, date_as_string)
         if contents == original_contents:
-            print(f"No changes were needed for the file: {filename}")
+            print(f"# No changes were needed for the file: {filename}")
         else:
-            print(f"Changes were made to the file: {filename}")
+            print(f"# Changes were made to the file: {filename}")
             new_filename = filename + ".new"
             with open(new_filename, 'w') as new_file:
                 new_file.write(contents)
@@ -65,7 +80,7 @@ def cleanup_file(self, filename):
             original_backup_filename = filename + ".original"
             os.rename(filename, original_backup_filename)
             os.rename(new_filename, filename)
-            print(f"You can view changes by issuing this command: diff -u {original_backup_filename} {filename}")
+            print(f"# You can view changes by issuing this command:\ndiff -u {original_backup_filename} {filename}")
 
 
 def main():
diff --git a/tests/test_session_notes_cleaner.py b/tests/test_session_notes_cleaner.py
index 414fa01..614d8cc 100644
--- a/tests/test_session_notes_cleaner.py
+++ b/tests/test_session_notes_cleaner.py
@@ -41,7 +41,14 @@ def test_normalize_coauthor_heading(self):
         cleaner = SessionNotesCleaner()
         text = "## Coauthors\n## Active Co-Authors\n## Today's Co-Authors\n## Co-Authors (today)\n"
         clean_text = cleaner.standardize_coauthor_heading(text)
-        acceptance_text = f'Before\n{text}\n\nAfter\n{clean_text}'
+        acceptance_text = f'Before\n{text}====\nAfter\n{clean_text}====\n'
+        verify(acceptance_text)
+
+    def test_remove_coauthor_headings(self):
+        cleaner = SessionNotesCleaner()
+        text = "## Coauthors\n## Facilitator\n## Active Co-Authors\n## Today's Co-Authors\n## Co-Authors (today)\n"
+        clean_text = cleaner.remove_coauthor_headings(text)
+        acceptance_text = f'Before\n{text}====\nAfter\n{clean_text}====\n'
         verify(acceptance_text)
 
     def test_cleanup_contents(self):

From cb8a9594eb747d88372e0b61bb5519a7049bfd6a Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Fri, 15 Dec 2023 00:29:46 -0500
Subject: [PATCH 34/51] . t New -
 test_add_coauthor_heading_before_co_authored_by_list(self):

---
 src/session_notes_cleanup/session_notes_cleaner.py | 13 ++++++++++++-
 tests/test_session_notes_cleaner.py                | 13 +++++++++++++
 2 files changed, 25 insertions(+), 1 deletion(-)

diff --git a/src/session_notes_cleanup/session_notes_cleaner.py b/src/session_notes_cleanup/session_notes_cleaner.py
index 8d01518..eaa3903 100644
--- a/src/session_notes_cleanup/session_notes_cleaner.py
+++ b/src/session_notes_cleanup/session_notes_cleaner.py
@@ -30,10 +30,19 @@ def remove_coauthor_headings(self, text):
         # Assumes Markdown formatting where 1st level is '# ' and 2nd level is '## '
         standard_text = self.standardize_coauthor_heading(text)
         pattern = r'^#{1,2}\s*Co-Authors.*$\n?'
-        cleaned_text = re.sub(pattern, '', standard_text, flags=re.MULTILINE)
+        cleaned_text = re.sub(pattern, '', standard_text, flags=re.IGNORECASE | re.MULTILINE)
 
         return cleaned_text
 
+
+    def add_coauthor_heading_before_co_authored_by_list(self, text):
+        search_pattern = r'^(Co-Authored-By.*)$'
+        replace_pattern = r'## Co-Authors\n\1'
+        cleaned_text = re.sub(search_pattern, replace_pattern, text,
+                              count=1,
+                              flags=re.IGNORECASE | re.MULTILINE)
+        return cleaned_text
+
     def applesauce(self, text):
         pattern = r'^#+\s*Co-Author$'
         re.sub(pattern, text,flags=re.IGNORECASE )
@@ -58,6 +67,8 @@ def cleanup_contents(self, text, session_date):
         if self.contains_active_coauthors(text) and self.contains_inactive_coauthors(text):
             text = self.delete_inactive_coauthors(text)
         text = self.standardize_coauthor_heading(text)
+        text = self.remove_coauthor_headings(text)
+        text = self.add_coauthor_heading_before_co_authored_by_list(text)
         return text
 
     def cleanup_file(self, filename):
diff --git a/tests/test_session_notes_cleaner.py b/tests/test_session_notes_cleaner.py
index 614d8cc..8263a69 100644
--- a/tests/test_session_notes_cleaner.py
+++ b/tests/test_session_notes_cleaner.py
@@ -51,6 +51,19 @@ def test_remove_coauthor_headings(self):
         acceptance_text = f'Before\n{text}====\nAfter\n{clean_text}====\n'
         verify(acceptance_text)
 
+    def test_add_coauthor_heading_before_co_authored_by_list(self):
+        cleaner = SessionNotesCleaner()
+        text = ""
+        text += "## Facilitator\n"
+        text += "Everyone\n"
+        text += "\n"
+        text += "Co-Authored-By: Manny\n"
+        text += "Co-Authored-By: Moe\n"
+        text += "Co-Authored-By: Jack\n"
+        clean_text = cleaner.add_coauthor_heading_before_co_authored_by_list(text)
+        acceptance_text = f'Before\n{text}====\nAfter\n{clean_text}====\n'
+        verify(acceptance_text)
+
     def test_cleanup_contents(self):
         cleaner = SessionNotesCleaner()
         text = self.sample_file_contents()

From b7952f4fd040a17a37c94a6819c9386fbcd40f5e Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Fri, 15 Dec 2023 01:32:05 -0500
Subject: [PATCH 35/51] . r Standardize headers before removing sections. 
 Tweak regep's to match various "(in)active co-author" headers

---
 .../session_notes_cleaner.py                    | 17 +++++------------
 tests/test_session_notes_cleaner.py             |  1 +
 2 files changed, 6 insertions(+), 12 deletions(-)

diff --git a/src/session_notes_cleanup/session_notes_cleaner.py b/src/session_notes_cleanup/session_notes_cleaner.py
index eaa3903..a9d7c95 100644
--- a/src/session_notes_cleanup/session_notes_cleaner.py
+++ b/src/session_notes_cleanup/session_notes_cleaner.py
@@ -9,22 +9,20 @@ def __init__(self):
         pass
 
     def contains_inactive_coauthors(self, text):
-        return bool(re.search(r'^#+\s*Inactive Co-Authors', text, re.IGNORECASE | re.MULTILINE))
+        return bool(re.search(r'^#+\s*Inactive( Co-Authors)?', text, re.IGNORECASE | re.MULTILINE))
 
     def delete_inactive_coauthors(self, text):
-        return re.sub(r'^#+\s*Inactive Co-Authors.*?(?=^#|\Z)', '', text,
+        return re.sub(r'^#+\s*Inactive( Co-Authors)?.*?(?=^#|\Z)', '', text,
                       flags=re.IGNORECASE | re.MULTILINE | re.DOTALL)
 
     def contains_active_coauthors(self, text):
-        return bool(re.search(r'^#+\s*Active Co-Authors', text, re.IGNORECASE | re.MULTILINE))
+        return bool(re.search(r'^#+\s*(Active )?Co-Authors', text, re.IGNORECASE | re.MULTILINE))
 
     def standardize_coauthor_heading(self, text):
-        return re.sub(r'^#+\s*.*Co-?Author.*', '## Co-Authors',
+        return re.sub(r'^#+\s*.*?((?:Inactive\s+)?)\s*Co-?Author.*', r'## \1Co-Authors',
                       text,
                       flags=re.IGNORECASE | re.MULTILINE)
 
-    import re
-
     def remove_coauthor_headings(self, text):
         # Regular expression to match 1st and 2nd level headings with "Co-Authors"
         # Assumes Markdown formatting where 1st level is '# ' and 2nd level is '## '
@@ -34,7 +32,6 @@ def remove_coauthor_headings(self, text):
 
         return cleaned_text
 
-
     def add_coauthor_heading_before_co_authored_by_list(self, text):
         search_pattern = r'^(Co-Authored-By.*)$'
         replace_pattern = r'## Co-Authors\n\1'
@@ -43,10 +40,6 @@ def add_coauthor_heading_before_co_authored_by_list(self, text):
                               flags=re.IGNORECASE | re.MULTILINE)
         return cleaned_text
 
-    def applesauce(self, text):
-        pattern = r'^#+\s*Co-Author$'
-        re.sub(pattern, text,flags=re.IGNORECASE )
-
     def get_date_from_filename(self, filename):
         match = re.search(r'(\d{4}-\d{2}-\d{2})', filename, re.IGNORECASE)
         return match.group(1) if match else None
@@ -64,9 +57,9 @@ def contains_session_date(self, text):
     def cleanup_contents(self, text, session_date):
         if not self.contains_session_date(text):
             text = f"# Session Date: {session_date}\n" + text
+        text = self.standardize_coauthor_heading(text)
         if self.contains_active_coauthors(text) and self.contains_inactive_coauthors(text):
             text = self.delete_inactive_coauthors(text)
-        text = self.standardize_coauthor_heading(text)
         text = self.remove_coauthor_headings(text)
         text = self.add_coauthor_heading_before_co_authored_by_list(text)
         return text
diff --git a/tests/test_session_notes_cleaner.py b/tests/test_session_notes_cleaner.py
index 8263a69..4d24b53 100644
--- a/tests/test_session_notes_cleaner.py
+++ b/tests/test_session_notes_cleaner.py
@@ -40,6 +40,7 @@ def test_delete_inactive_coauthors(self):
     def test_normalize_coauthor_heading(self):
         cleaner = SessionNotesCleaner()
         text = "## Coauthors\n## Active Co-Authors\n## Today's Co-Authors\n## Co-Authors (today)\n"
+        text += "## Inactive\n## Inactive Co-Authors\n## Inactive CoAuthors\n"
         clean_text = cleaner.standardize_coauthor_heading(text)
         acceptance_text = f'Before\n{text}====\nAfter\n{clean_text}====\n'
         verify(acceptance_text)

From 026f02c22e3517273cea7cfd884ac060aada2c6f Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Fri, 15 Dec 2023 02:54:24 -0500
Subject: [PATCH 36/51] . . Reverting files to
 b03bc8a035f61199035fffc12ab957658e42089c, before PR #9

---
 session-notes/session-notes-2022-10-13.md     |  1 -
 session-notes/session-notes-2022-10-20.md     |  1 -
 session-notes/session-notes-2022-11-03.md     |  1 -
 session-notes/session-notes-2022-11-10.md     |  1 -
 session-notes/session-notes-2022-11-24.md     |  1 -
 session-notes/session-notes-2022-12-01.md     |  1 -
 session-notes/session-notes-2022-12-08.md     |  1 -
 session-notes/session-notes-2022-12-15.md     |  1 -
 session-notes/session-notes-2022-12-22.md     |  1 -
 session-notes/session-notes-2023-01-05.md     |  1 -
 session-notes/session-notes-2023-01-12.md     |  1 -
 session-notes/session-notes-2023-01-19.md     |  1 -
 session-notes/session-notes-2023-01-26.md     |  1 -
 session-notes/session-notes-2023-02-02.md     |  1 -
 session-notes/session-notes-2023-02-09.md     |  1 -
 session-notes/session-notes-2023-02-16.md     |  1 -
 session-notes/session-notes-2023-02-23.md     |  1 -
 session-notes/session-notes-2023-03-02.md     |  1 -
 session-notes/session-notes-2023-03-09.md     |  1 -
 session-notes/session-notes-2023-03-16.md     |  1 -
 .../session-notes-2023-03-16.session2.md      |  1 -
 session-notes/session-notes-2023-03-23.md     |  1 -
 session-notes/session-notes-2023-03-30.md     |  1 -
 session-notes/session-notes-2023-04-06.md     |  1 -
 session-notes/session-notes-2023-04-13.md     |  1 -
 session-notes/session-notes-2023-04-27.md     | 17 ++++++++++---
 session-notes/session-notes-2023-05-04.md     | 16 ++++++++++---
 session-notes/session-notes-2023-05-11.md     |  5 ++--
 session-notes/session-notes-2023-05-18.md     | 18 +++++++++++---
 session-notes/session-notes-2023-05-25.md     | 18 +++++++++++---
 session-notes/session-notes-2023-06-01.md     | 19 ++++++++++++---
 session-notes/session-notes-2023-06-08.md     | 20 +++++++++++++---
 session-notes/session-notes-2023-06-15.md     | 20 +++++++++++++---
 session-notes/session-notes-2023-06-22.md     | 20 +++++++++++++---
 session-notes/session-notes-2023-07-06.md     | 20 +++++++++++++---
 session-notes/session-notes-2023-07-13.md     | 20 +++++++++++++---
 session-notes/session-notes-2023-07-20.md     | 19 ++++++++++++---
 session-notes/session-notes-2023-07-27.md     |  5 ++--
 session-notes/session-notes-2023-08-17.md     | 22 ++++++++++++++---
 session-notes/session-notes-2023-08-24.md     | 19 ++++++++++++++-
 session-notes/session-notes-2023-08-31.md     | 18 +++++++++++++-
 session-notes/session-notes-2023-09-07.md     |  2 +-
 session-notes/session-notes-2023-09-14.md     | 18 +++++++++++++-
 session-notes/session-notes-2023-09-21.md     | 19 ++++++++++++++-
 session-notes/session-notes-2023-09-28.md     | 18 +++++++++++++-
 session-notes/session-notes-2023-10-05.md     | 18 +++++++++++++-
 session-notes/session-notes-2023-10-12.md     |  2 +-
 session-notes/session-notes-2023-10-19.md     |  3 +--
 session-notes/session-notes-2023-11-09.md     | 16 ++++++++++++-
 session-notes/session-notes-2023-11-16.md     | 18 +++++++++++++-
 session-notes/session-notes-2023-11-23.md     | 20 +++++++++++++++-
 session-notes/session-notes-2023-12-07.md     | 24 ++++++++++++++++++-
 session-notes/session-notes-YYYY-MM-DD.md     |  4 ++--
 53 files changed, 380 insertions(+), 83 deletions(-)

diff --git a/session-notes/session-notes-2022-10-13.md b/session-notes/session-notes-2022-10-13.md
index 0847a00..040685a 100644
--- a/session-notes/session-notes-2022-10-13.md
+++ b/session-notes/session-notes-2022-10-13.md
@@ -1,4 +1,3 @@
-# Session Date: 2022-10-13
 # How did that feel?
 - Liked the Game, is cool. Works well as a timer (has bugs). Like a mini retro all the time.
 - Great Time
diff --git a/session-notes/session-notes-2022-10-20.md b/session-notes/session-notes-2022-10-20.md
index 32c8030..7cf4e47 100644
--- a/session-notes/session-notes-2022-10-20.md
+++ b/session-notes/session-notes-2022-10-20.md
@@ -1,4 +1,3 @@
-# Session Date: 2022-10-20
 # How did that feel?
 - Nice +1
 - Interesting
diff --git a/session-notes/session-notes-2022-11-03.md b/session-notes/session-notes-2022-11-03.md
index e0e1818..8acf3b9 100644
--- a/session-notes/session-notes-2022-11-03.md
+++ b/session-notes/session-notes-2022-11-03.md
@@ -1,4 +1,3 @@
-# Session Date: 2022-11-03
 # How did that feel?
 - Enjoyed it, a bit of small talk in the beggining
 - Felt productive, made good progress
diff --git a/session-notes/session-notes-2022-11-10.md b/session-notes/session-notes-2022-11-10.md
index 448a7bc..4a60379 100644
--- a/session-notes/session-notes-2022-11-10.md
+++ b/session-notes/session-notes-2022-11-10.md
@@ -1,4 +1,3 @@
-# Session Date: 2022-11-10
 # How did that feel?
 - I like working on Testinfrastructure
     - Nice engineering challenge
diff --git a/session-notes/session-notes-2022-11-24.md b/session-notes/session-notes-2022-11-24.md
index 2620bb0..831a77b 100644
--- a/session-notes/session-notes-2022-11-24.md
+++ b/session-notes/session-notes-2022-11-24.md
@@ -1,4 +1,3 @@
-# Session Date: 2022-11-24
 # How did that feel?
 - frustrating +1
 - happy that we found the cause in the end +1
diff --git a/session-notes/session-notes-2022-12-01.md b/session-notes/session-notes-2022-12-01.md
index dca2fe0..09e26a3 100644
--- a/session-notes/session-notes-2022-12-01.md
+++ b/session-notes/session-notes-2022-12-01.md
@@ -1,4 +1,3 @@
-# Session Date: 2022-12-01
 # How did that feel?
 - Challenging +100
 - Not Stable, constantly port in use
diff --git a/session-notes/session-notes-2022-12-08.md b/session-notes/session-notes-2022-12-08.md
index 4d0f053..5f90996 100644
--- a/session-notes/session-notes-2022-12-08.md
+++ b/session-notes/session-notes-2022-12-08.md
@@ -1,4 +1,3 @@
-# Session Date: 2022-12-08
 # Goal
 
 - Fix inconsistent test failures around the wsserver
diff --git a/session-notes/session-notes-2022-12-15.md b/session-notes/session-notes-2022-12-15.md
index 3c0803b..dadb559 100644
--- a/session-notes/session-notes-2022-12-15.md
+++ b/session-notes/session-notes-2022-12-15.md
@@ -1,4 +1,3 @@
-# Session Date: 2022-12-15
 # Goal
 
 - curios to test the rotation issue again manually
diff --git a/session-notes/session-notes-2022-12-22.md b/session-notes/session-notes-2022-12-22.md
index cfe14ca..4e526eb 100644
--- a/session-notes/session-notes-2022-12-22.md
+++ b/session-notes/session-notes-2022-12-22.md
@@ -1,4 +1,3 @@
-# Session Date: 2022-12-22
 # Goal
 
 - [X] !! potential bug: rotate button should not use rotateToTarget
diff --git a/session-notes/session-notes-2023-01-05.md b/session-notes/session-notes-2023-01-05.md
index 684fa5a..9b1f19c 100644
--- a/session-notes/session-notes-2023-01-05.md
+++ b/session-notes/session-notes-2023-01-05.md
@@ -1,4 +1,3 @@
-# Session Date: 2023-01-05
 # Goal
 
 - [x] For next time we could take a look at this one:
diff --git a/session-notes/session-notes-2023-01-12.md b/session-notes/session-notes-2023-01-12.md
index 6863504..7022d1c 100644
--- a/session-notes/session-notes-2023-01-12.md
+++ b/session-notes/session-notes-2023-01-12.md
@@ -1,4 +1,3 @@
-# Session Date: 2023-01-12
 # Goal
 - Bug: Game ID should be in the URL
 - Exploratory testing
diff --git a/session-notes/session-notes-2023-01-19.md b/session-notes/session-notes-2023-01-19.md
index 0071db8..0280569 100644
--- a/session-notes/session-notes-2023-01-19.md
+++ b/session-notes/session-notes-2023-01-19.md
@@ -1,4 +1,3 @@
-# Session Date: 2023-01-19
 # Goal
 - Limit number of points to 3 per role
 - Exploratory testing
diff --git a/session-notes/session-notes-2023-01-26.md b/session-notes/session-notes-2023-01-26.md
index 7697616..12d55a5 100644
--- a/session-notes/session-notes-2023-01-26.md
+++ b/session-notes/session-notes-2023-01-26.md
@@ -1,4 +1,3 @@
-# Session Date: 2023-01-26
 # Goal
 - Exploratory testing
     - A: which part? Q: all the app
diff --git a/session-notes/session-notes-2023-02-02.md b/session-notes/session-notes-2023-02-02.md
index 840f677..c83ba12 100644
--- a/session-notes/session-notes-2023-02-02.md
+++ b/session-notes/session-notes-2023-02-02.md
@@ -1,4 +1,3 @@
-# Session Date: 2023-02-02
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
diff --git a/session-notes/session-notes-2023-02-09.md b/session-notes/session-notes-2023-02-09.md
index 2b51920..0d33c23 100644
--- a/session-notes/session-notes-2023-02-09.md
+++ b/session-notes/session-notes-2023-02-09.md
@@ -1,4 +1,3 @@
-# Session Date: 2023-02-09
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
 Co-Authored-By: Rea <reasu@protonmail.com>
diff --git a/session-notes/session-notes-2023-02-16.md b/session-notes/session-notes-2023-02-16.md
index 9309b55..deca73e 100644
--- a/session-notes/session-notes-2023-02-16.md
+++ b/session-notes/session-notes-2023-02-16.md
@@ -1,4 +1,3 @@
-# Session Date: 2023-02-16
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 
diff --git a/session-notes/session-notes-2023-02-23.md b/session-notes/session-notes-2023-02-23.md
index d05de48..a57b769 100644
--- a/session-notes/session-notes-2023-02-23.md
+++ b/session-notes/session-notes-2023-02-23.md
@@ -1,4 +1,3 @@
-# Session Date: 2023-02-23
 Co-Authored-By: Rea <reasu@protonmail.com>
 Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
diff --git a/session-notes/session-notes-2023-03-02.md b/session-notes/session-notes-2023-03-02.md
index eb3f699..56abc86 100644
--- a/session-notes/session-notes-2023-03-02.md
+++ b/session-notes/session-notes-2023-03-02.md
@@ -1,4 +1,3 @@
-# Session Date: 2023-03-02
 Co-Authored-By: arrockt <cariari385@gmail.com>
 Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
 Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
diff --git a/session-notes/session-notes-2023-03-09.md b/session-notes/session-notes-2023-03-09.md
index 7e8bd96..76fe770 100644
--- a/session-notes/session-notes-2023-03-09.md
+++ b/session-notes/session-notes-2023-03-09.md
@@ -1,4 +1,3 @@
-# Session Date: 2023-03-09
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
diff --git a/session-notes/session-notes-2023-03-16.md b/session-notes/session-notes-2023-03-16.md
index 4eb2169..df3ef61 100644
--- a/session-notes/session-notes-2023-03-16.md
+++ b/session-notes/session-notes-2023-03-16.md
@@ -1,4 +1,3 @@
-# Session Date: 2023-03-16
 Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
diff --git a/session-notes/session-notes-2023-03-16.session2.md b/session-notes/session-notes-2023-03-16.session2.md
index 5718844..464882e 100644
--- a/session-notes/session-notes-2023-03-16.session2.md
+++ b/session-notes/session-notes-2023-03-16.session2.md
@@ -1,4 +1,3 @@
-# Session Date: 2023-03-16
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 
 # Agenda
diff --git a/session-notes/session-notes-2023-03-23.md b/session-notes/session-notes-2023-03-23.md
index e247f3f..6d3b070 100644
--- a/session-notes/session-notes-2023-03-23.md
+++ b/session-notes/session-notes-2023-03-23.md
@@ -1,4 +1,3 @@
-# Session Date: 2023-03-23
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
diff --git a/session-notes/session-notes-2023-03-30.md b/session-notes/session-notes-2023-03-30.md
index c74fd3c..6aaafc2 100644
--- a/session-notes/session-notes-2023-03-30.md
+++ b/session-notes/session-notes-2023-03-30.md
@@ -1,4 +1,3 @@
-# Session Date: 2023-03-30
 Session 1:
 Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
diff --git a/session-notes/session-notes-2023-04-06.md b/session-notes/session-notes-2023-04-06.md
index cacac98..18d83b5 100644
--- a/session-notes/session-notes-2023-04-06.md
+++ b/session-notes/session-notes-2023-04-06.md
@@ -1,4 +1,3 @@
-# Session Date: 2023-04-06
 ## Active
 
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
diff --git a/session-notes/session-notes-2023-04-13.md b/session-notes/session-notes-2023-04-13.md
index ebccccf..93c9abe 100644
--- a/session-notes/session-notes-2023-04-13.md
+++ b/session-notes/session-notes-2023-04-13.md
@@ -1,4 +1,3 @@
-# Session Date: 2023-04-13
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
diff --git a/session-notes/session-notes-2023-04-27.md b/session-notes/session-notes-2023-04-27.md
index 368b9d8..fb78505 100644
--- a/session-notes/session-notes-2023-04-27.md
+++ b/session-notes/session-notes-2023-04-27.md
@@ -1,12 +1,23 @@
-# Session Date: 2023-04-27
-## Co-Authors
+# Co-Authors (This Session)
 
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 
-## Co-Authors
+## Active Co-Authors
+
+## Inactive Co-Authors
+
+Co-Authored-By: arrockt <cariari385@gmail.com>
+Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
+Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
+Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
+Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
+Co-Authored-By: Idan Melamed <idanmel@gmail.com>
+Co-Authored-By: Rea <reasu@protonmail.com>
+Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
+Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
 
 # Agenda
 
diff --git a/session-notes/session-notes-2023-05-04.md b/session-notes/session-notes-2023-05-04.md
index 48abb3d..64983ce 100644
--- a/session-notes/session-notes-2023-05-04.md
+++ b/session-notes/session-notes-2023-05-04.md
@@ -1,7 +1,6 @@
-# Session Date: 2023-05-04
-## Co-Authors
+# Co-Authors (This Session)
 
-## Co-Authors
+## Active Co-Authors
 
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
@@ -9,6 +8,17 @@ Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 
+## Inactive Co-Authors
+
+Co-Authored-By: arrockt <cariari385@gmail.com>
+Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
+Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
+Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
+Co-Authored-By: Idan Melamed <idanmel@gmail.com>
+Co-Authored-By: Rea <reasu@protonmail.com>
+Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
+Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
+
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-05-11.md b/session-notes/session-notes-2023-05-11.md
index 3edfa94..bf0a18a 100644
--- a/session-notes/session-notes-2023-05-11.md
+++ b/session-notes/session-notes-2023-05-11.md
@@ -1,7 +1,6 @@
-# Session Date: 2023-05-11
-## Co-Authors
+# Co-Authors (This Session)
 
-## Co-Authors
+## Active Co-Authors
 
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
diff --git a/session-notes/session-notes-2023-05-18.md b/session-notes/session-notes-2023-05-18.md
index d25e6c8..c05b157 100644
--- a/session-notes/session-notes-2023-05-18.md
+++ b/session-notes/session-notes-2023-05-18.md
@@ -1,12 +1,24 @@
-# Session Date: 2023-05-18
-## Co-Authors
+# Co-Authors (This Session)
 
-## Co-Authors
+## Active Co-Authors
 
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 
+## Inactive Co-Authors
+
+Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
+Co-Authored-By: arrockt <cariari385@gmail.com>
+Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
+Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
+Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
+Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
+Co-Authored-By: Idan Melamed <idanmel@gmail.com>
+Co-Authored-By: Rea <reasu@protonmail.com>
+Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
+Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
+
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-05-25.md b/session-notes/session-notes-2023-05-25.md
index 0e1a0b4..74f2945 100644
--- a/session-notes/session-notes-2023-05-25.md
+++ b/session-notes/session-notes-2023-05-25.md
@@ -1,13 +1,25 @@
-# Session Date: 2023-05-25
-## Co-Authors
+# Co-Authors (This Session)
 
-## Co-Authors
+## Active Co-Authors
 
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
 
+## Inactive Co-Authors
+
+Co-Authored-By: arrockt <cariari385@gmail.com>
+Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
+Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
+Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
+Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
+Co-Authored-By: Idan Melamed <idanmel@gmail.com>
+Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
+Co-Authored-By: Rea <reasu@protonmail.com>
+Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
+Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
+
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-06-01.md b/session-notes/session-notes-2023-06-01.md
index 3d8ccfd..f0ccc50 100644
--- a/session-notes/session-notes-2023-06-01.md
+++ b/session-notes/session-notes-2023-06-01.md
@@ -1,7 +1,6 @@
-# Session Date: 2023-06-01
-## Co-Authors
+# Co-Authors (This Session)
 
-## Co-Authors
+## Active Co-Authors
 
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
@@ -9,6 +8,20 @@ Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
 Co-Authored-By: David Campey <campey@gmail.com>
 Co-Authored-by: Zac Ball <zac156@gmail.com>
 
+## Inactive Co-Authors
+
+Co-Authored-By: arrockt <cariari385@gmail.com>
+Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
+Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
+Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
+Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
+Co-Authored-By: Idan Melamed <idanmel@gmail.com>
+Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
+Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
+Co-Authored-By: Rea <reasu@protonmail.com>
+Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
+Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
+
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-06-08.md b/session-notes/session-notes-2023-06-08.md
index 8cc9ac1..a3bc2c4 100644
--- a/session-notes/session-notes-2023-06-08.md
+++ b/session-notes/session-notes-2023-06-08.md
@@ -1,7 +1,6 @@
-# Session Date: 2023-06-08
-## Co-Authors
+# Co-Authors (This Session)
 
-## Co-Authors
+## Active Co-Authors
 
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
@@ -9,6 +8,21 @@ Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
 Co-Authored-By: David Campey <campey@gmail.com>
 
+## Inactive Co-Authors
+
+Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
+Co-Authored-By: arrockt <cariari385@gmail.com>
+Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
+Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
+Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
+Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
+Co-Authored-By: Idan Melamed <idanmel@gmail.com>
+Co-Authored-By: Rea <reasu@protonmail.com>
+Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
+Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
+Co-Authored-By: David Campey <campey@gmail.com>
+Co-Authored-by: Zac Ball <zac156@gmail.com>
+
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-06-15.md b/session-notes/session-notes-2023-06-15.md
index 7bd5fdd..52143ab 100644
--- a/session-notes/session-notes-2023-06-15.md
+++ b/session-notes/session-notes-2023-06-15.md
@@ -1,7 +1,6 @@
-# Session Date: 2023-06-15
-## Co-Authors
+# Co-Authors (This Session)
 
-## Co-Authors
+## Active Co-Authors
 
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
@@ -9,6 +8,21 @@ Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: Nathaniel ...
 
+## Inactive Co-Authors
+
+Co-Authored-By: arrockt <cariari385@gmail.com>
+Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
+Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
+Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
+Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
+Co-Authored-By: Idan Melamed <idanmel@gmail.com>
+Co-Authored-By: Rea <reasu@protonmail.com>
+Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
+Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
+Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
+Co-Authored-By: David Campey <campey@gmail.com>
+Co-Authored-by: Zac Ball <zac156@gmail.com>
+
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-06-22.md b/session-notes/session-notes-2023-06-22.md
index a34e316..5bcf65c 100644
--- a/session-notes/session-notes-2023-06-22.md
+++ b/session-notes/session-notes-2023-06-22.md
@@ -1,13 +1,27 @@
-# Session Date: 2023-06-22
-## Co-Authors
+# Co-Authors (This Session)
 
-## Co-Authors
+## Active Co-Authors
 
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
 
+## Inactive Co-Authors
+
+Co-Authored-By: arrockt <cariari385@gmail.com>
+Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
+Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
+Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
+Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
+Co-Authored-By: Idan Melamed <idanmel@gmail.com>
+Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
+Co-Authored-By: Rea <reasu@protonmail.com>
+Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
+Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
+Co-Authored-By: David Campey <campey@gmail.com>
+Co-Authored-by: Zac Ball <zac156@gmail.com>
+
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-07-06.md b/session-notes/session-notes-2023-07-06.md
index f0eda94..fbb5f7c 100644
--- a/session-notes/session-notes-2023-07-06.md
+++ b/session-notes/session-notes-2023-07-06.md
@@ -1,13 +1,27 @@
-# Session Date: 2023-07-06
-## Co-Authors
+# Co-Authors (This Session)
 
-## Co-Authors
+## Active Co-Authors
 
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 
+## Inactive Co-Authors
+
+Co-Authored-By: arrockt <cariari385@gmail.com>
+Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
+Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
+Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
+Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
+Co-Authored-By: Idan Melamed <idanmel@gmail.com>
+Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
+Co-Authored-By: Rea <reasu@protonmail.com>
+Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
+Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
+Co-Authored-By: David Campey <campey@gmail.com>
+Co-Authored-by: Zac Ball <zac156@gmail.com>
+
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-07-13.md b/session-notes/session-notes-2023-07-13.md
index 9b88900..9f5cda2 100644
--- a/session-notes/session-notes-2023-07-13.md
+++ b/session-notes/session-notes-2023-07-13.md
@@ -1,13 +1,27 @@
-# Session Date: 2023-07-13
-## Co-Authors
+# Co-Authors (This Session)
 
-## Co-Authors
+## Active Co-Authors
 
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 
+## Inactive Co-Authors
+
+Co-Authored-By: arrockt <cariari385@gmail.com>
+Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
+Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
+Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
+Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
+Co-Authored-By: Idan Melamed <idanmel@gmail.com>
+Co-Authored-By: Rea <reasu@protonmail.com>
+Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
+Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
+Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
+Co-Authored-By: David Campey <campey@gmail.com>
+Co-Authored-by: Zac Ball <zac156@gmail.com>
+
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-07-20.md b/session-notes/session-notes-2023-07-20.md
index 824074d..bb35606 100644
--- a/session-notes/session-notes-2023-07-20.md
+++ b/session-notes/session-notes-2023-07-20.md
@@ -1,7 +1,6 @@
-# Session Date: 2023-07-20
-## Co-Authors
+# Co-Authors (This Session)
 
-## Co-Authors
+## Active Co-Authors
 
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
@@ -9,6 +8,20 @@ Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
 
+## Inactive Co-Authors
+
+Co-Authored-By: arrockt <cariari385@gmail.com>
+Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
+Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
+Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
+Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
+Co-Authored-By: Idan Melamed <idanmel@gmail.com>
+Co-Authored-By: Rea <reasu@protonmail.com>
+Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
+Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
+Co-Authored-By: David Campey <campey@gmail.com>
+Co-Authored-by: Zac Ball <zac156@gmail.com>
+
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-07-27.md b/session-notes/session-notes-2023-07-27.md
index ee64b32..51cf1db 100644
--- a/session-notes/session-notes-2023-07-27.md
+++ b/session-notes/session-notes-2023-07-27.md
@@ -1,7 +1,6 @@
-# Session Date: 2023-07-27
-## Co-Authors
+# Co-Authors (This Session)
 
-## Co-Authors
+## Active Co-Authors
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
diff --git a/session-notes/session-notes-2023-08-17.md b/session-notes/session-notes-2023-08-17.md
index c53787d..ea4fd96 100644
--- a/session-notes/session-notes-2023-08-17.md
+++ b/session-notes/session-notes-2023-08-17.md
@@ -1,12 +1,28 @@
-# Session Date: 2023-08-17
-## Co-Authors
+# Co-Authors (This Session)
 
-## Co-Authors
+## Active Co-Authors
 
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 
+## Inactive Co-Authors
+
+Co-Authored-By: arrockt <cariari385@gmail.com>
+Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
+Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
+Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
+Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
+Co-Authored-By: Idan Melamed <idanmel@gmail.com>
+Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
+Co-Authored-By: Rea <reasu@protonmail.com>
+Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
+Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
+Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
+Co-Authored-By: David Campey <campey@gmail.com>
+Co-Authored-by: Zac Ball <zac156@gmail.com>
+Co-Authored-By: Kitastro <admin@metafor.co.za>
+
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-08-24.md b/session-notes/session-notes-2023-08-24.md
index 97c55c2..11f1c9d 100644
--- a/session-notes/session-notes-2023-08-24.md
+++ b/session-notes/session-notes-2023-08-24.md
@@ -1,11 +1,28 @@
 # Session Date: 2023-08-24
 
-## Co-Authors
+## Active Co-Authors
 
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 
+## Inactive Co-Authors
+
+Co-Authored-By: arrockt <cariari385@gmail.com>
+Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
+Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
+Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
+Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
+Co-Authored-By: Idan Melamed <idanmel@gmail.com>
+Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
+Co-Authored-By: Rea <reasu@protonmail.com>
+Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
+Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
+Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
+Co-Authored-By: David Campey <campey@gmail.com>
+Co-Authored-by: Zac Ball <zac156@gmail.com>
+Co-Authored-By: Kitastro <admin@metafor.co.za>
+
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-08-31.md b/session-notes/session-notes-2023-08-31.md
index ccb2e86..527ce6b 100644
--- a/session-notes/session-notes-2023-08-31.md
+++ b/session-notes/session-notes-2023-08-31.md
@@ -1,12 +1,28 @@
 # Session Date: 2023-08-31
 
-## Co-Authors
+## Active Co-Authors
 
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 
+## Inactive Co-Authors
+
+Co-Authored-By: arrockt <cariari385@gmail.com>
+Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
+Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
+Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
+Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
+Co-Authored-By: Idan Melamed <idanmel@gmail.com>
+Co-Authored-By: Rea <reasu@protonmail.com>
+Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
+Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
+Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
+Co-Authored-By: David Campey <campey@gmail.com>
+Co-Authored-by: Zac Ball <zac156@gmail.com>
+Co-Authored-By: Kitastro <admin@metafor.co.za>
+
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-09-07.md b/session-notes/session-notes-2023-09-07.md
index 3cf106a..c8274b5 100644
--- a/session-notes/session-notes-2023-09-07.md
+++ b/session-notes/session-notes-2023-09-07.md
@@ -1,6 +1,6 @@
 # Session Date: 2023-09-07
 
-## Co-Authors
+## Active Co-Authors
 
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
diff --git a/session-notes/session-notes-2023-09-14.md b/session-notes/session-notes-2023-09-14.md
index 0c2bac9..0bca662 100644
--- a/session-notes/session-notes-2023-09-14.md
+++ b/session-notes/session-notes-2023-09-14.md
@@ -1,12 +1,28 @@
 # Session Date: 2023-09-14
 
-## Co-Authors
+## Active Co-Authors
 
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
 
+## Inactive Co-Authors
+
+Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
+Co-Authored-By: arrockt <cariari385@gmail.com>
+Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
+Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
+Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
+Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
+Co-Authored-By: Idan Melamed <idanmel@gmail.com>
+Co-Authored-By: Rea <reasu@protonmail.com>
+Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
+Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
+Co-Authored-By: David Campey <campey@gmail.com>
+Co-Authored-by: Zac Ball <zac156@gmail.com>
+Co-Authored-By: Kitastro <admin@metafor.co.za>
+
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-09-21.md b/session-notes/session-notes-2023-09-21.md
index 662ea25..4ddc199 100644
--- a/session-notes/session-notes-2023-09-21.md
+++ b/session-notes/session-notes-2023-09-21.md
@@ -1,10 +1,27 @@
 # Session Date: 2023-09-21
 
-## Co-Authors
+## Active Co-Authors
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
 
+## Inactive Co-Authors
+
+Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
+Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
+Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
+Co-Authored-By: arrockt <cariari385@gmail.com>
+Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
+Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
+Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
+Co-Authored-By: Idan Melamed <idanmel@gmail.com>
+Co-Authored-By: Rea <reasu@protonmail.com>
+Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
+Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
+Co-Authored-By: David Campey <campey@gmail.com>
+Co-Authored-by: Zac Ball <zac156@gmail.com>
+Co-Authored-By: Kitastro <admin@metafor.co.za>
+
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-09-28.md b/session-notes/session-notes-2023-09-28.md
index 1d5266e..71654ae 100644
--- a/session-notes/session-notes-2023-09-28.md
+++ b/session-notes/session-notes-2023-09-28.md
@@ -1,6 +1,6 @@
 # Session Date: 2023-09-28
 
-## Co-Authors
+## Active Co-Authors
 
 Co-Authored-By: Woody Zuill <wzuill@yahoo.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
@@ -8,6 +8,22 @@ Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
 Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
 
+## Inactive Co-Authors
+
+Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
+Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
+Co-Authored-By: arrockt <cariari385@gmail.com>
+Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
+Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
+Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
+Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
+Co-Authored-By: Idan Melamed <idanmel@gmail.com>
+Co-Authored-By: Rea <reasu@protonmail.com>
+Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
+Co-Authored-By: David Campey <campey@gmail.com>
+Co-Authored-by: Zac Ball <zac156@gmail.com>
+Co-Authored-By: Kitastro <admin@metafor.co.za>
+
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-10-05.md b/session-notes/session-notes-2023-10-05.md
index a75622e..04cc94a 100644
--- a/session-notes/session-notes-2023-10-05.md
+++ b/session-notes/session-notes-2023-10-05.md
@@ -1,6 +1,6 @@
 # Session Date: 2023-10-12
 
-## Co-Authors
+## Active Co-Authors
 
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
@@ -8,6 +8,22 @@ Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
 
+## Inactive Co-Authors
+
+Co-Authored-By: arrockt <cariari385@gmail.com>
+Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
+Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
+Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
+Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
+Co-Authored-By: Idan Melamed <idanmel@gmail.com>
+Co-Authored-By: Rea <reasu@protonmail.com>
+Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
+Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
+Co-Authored-By: David Campey <campey@gmail.com>
+Co-Authored-by: Zac Ball <zac156@gmail.com>
+Co-Authored-By: Kitastro <admin@metafor.co.za>
+Co-Authored-By: Woody Zuill <wzuill@yahoo.com>
+
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-10-12.md b/session-notes/session-notes-2023-10-12.md
index ba52ab0..4974922 100644
--- a/session-notes/session-notes-2023-10-12.md
+++ b/session-notes/session-notes-2023-10-12.md
@@ -1,6 +1,6 @@
 # Session Date: 2023-10-12
 
-## Co-Authors
+## Active Co-Authors
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
diff --git a/session-notes/session-notes-2023-10-19.md b/session-notes/session-notes-2023-10-19.md
index 0712a39..d43ed9f 100644
--- a/session-notes/session-notes-2023-10-19.md
+++ b/session-notes/session-notes-2023-10-19.md
@@ -1,6 +1,5 @@
-# Session Date: 2023-10-19
 
-## Co-Authors
+## Active Co-Authors
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
diff --git a/session-notes/session-notes-2023-11-09.md b/session-notes/session-notes-2023-11-09.md
index 1e64114..4c328d8 100644
--- a/session-notes/session-notes-2023-11-09.md
+++ b/session-notes/session-notes-2023-11-09.md
@@ -1,6 +1,6 @@
 # Session Date: 2023-11-09
 
-## Co-Authors
+## Active Co-Authors
 Co-Authored-By: Blaise Pabon <blaise@gmail.com>
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
@@ -10,6 +10,20 @@ Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
 Co-Authored-By: Idan Melamed <idanmel@gmail.com>
 Co-Authored-By: Llewellyn Falco <llewellyn.falco@gmail.com>
 
+## Inactive Co-Authors
+Co-Authored-By: arrockt <cariari385@gmail.com>
+Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
+Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
+Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
+Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
+Co-Authored-By: Rea <reasu@protonmail.com>
+Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
+Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
+Co-Authored-By: David Campey <campey@gmail.com>
+Co-Authored-by: Zac Ball <zac156@gmail.com>
+Co-Authored-By: Kitastro <admin@metafor.co.za>
+Co-Authored-By: Woody Zuill <wzuill@yahoo.com>
+
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-11-16.md b/session-notes/session-notes-2023-11-16.md
index 348ee66..5ae17dd 100644
--- a/session-notes/session-notes-2023-11-16.md
+++ b/session-notes/session-notes-2023-11-16.md
@@ -1,6 +1,6 @@
 # Session Date: 2023-11-16
 
-## Co-Authors
+## Active Co-Authors
 Co-Authored-By: Blaise Pabon <blaise@gmail.com>
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
@@ -8,6 +8,22 @@ Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com
 Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
 Co-Authored-By: Idan Melamed <idanmel@gmail.com>
 
+## Inactive Co-Authors
+Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
+Co-Authored-By: arrockt <cariari385@gmail.com>
+Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
+Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
+Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
+Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
+Co-Authored-By: Rea <reasu@protonmail.com>
+Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
+Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
+Co-Authored-By: David Campey <campey@gmail.com>
+Co-Authored-by: Zac Ball <zac156@gmail.com>
+Co-Authored-By: Kitastro <admin@metafor.co.za>
+Co-Authored-By: Woody Zuill <wzuill@yahoo.com>
+Co-Authored-By: Llewellyn Falco <llewellyn.falco@gmail.com>
+
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-11-23.md b/session-notes/session-notes-2023-11-23.md
index 5dbd342..c248a4a 100644
--- a/session-notes/session-notes-2023-11-23.md
+++ b/session-notes/session-notes-2023-11-23.md
@@ -1,11 +1,29 @@
 # Session Date: 2023-11-23
 
-## Co-Authors
+## Active Co-Authors
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
 
+## Inactive Co-Authors
+Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
+Co-Authored-By: Blaise Pabon <blaise@gmail.com>
+Co-Authored-By: arrockt <cariari385@gmail.com>
+Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
+Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
+Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
+Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
+Co-Authored-By: Idan Melamed <idanmel@gmail.com>
+Co-Authored-By: Rea <reasu@protonmail.com>
+Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
+Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
+Co-Authored-By: David Campey <campey@gmail.com>
+Co-Authored-by: Zac Ball <zac156@gmail.com>
+Co-Authored-By: Kitastro <admin@metafor.co.za>
+Co-Authored-By: Woody Zuill <wzuill@yahoo.com>
+Co-Authored-By: Llewellyn Falco <llewellyn.falco@gmail.com>
+
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-12-07.md b/session-notes/session-notes-2023-12-07.md
index 8409e27..1b96160 100644
--- a/session-notes/session-notes-2023-12-07.md
+++ b/session-notes/session-notes-2023-12-07.md
@@ -1,6 +1,6 @@
 # Session Date: 2023-12-07
 
-## Co-Authors
+## Active Co-Authors
 Co-Authored-By: Nathaniel Herman <nathaniel.herman@gmail.com>
 Co-Authored-By: Blaise Pabon <blaise@gmail.com>
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
@@ -10,6 +10,28 @@ Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
 Co-Authored-By: Nathaniel Herman <nathaniel.herman@gmail.com>
 
 
+## Inactive Co-Authors
+Co-Authored-By: Blaise Pabon <blaise@gmail.com>
+Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
+Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
+Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
+Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
+Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
+Co-Authored-By: arrockt <cariari385@gmail.com>
+Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
+Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
+Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
+Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
+Co-Authored-By: Idan Melamed <idanmel@gmail.com>
+Co-Authored-By: Rea <reasu@protonmail.com>
+Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
+Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
+Co-Authored-By: David Campey <campey@gmail.com>
+Co-Authored-by: Zac Ball <zac156@gmail.com>
+Co-Authored-By: Kitastro <admin@metafor.co.za>
+Co-Authored-By: Woody Zuill <wzuill@yahoo.com>
+Co-Authored-By: Llewellyn Falco <llewellyn.falco@gmail.com>
+
 # Agenda
 
 ## Bond (30 min.)
diff --git a/session-notes/session-notes-YYYY-MM-DD.md b/session-notes/session-notes-YYYY-MM-DD.md
index 244c014..c568887 100644
--- a/session-notes/session-notes-YYYY-MM-DD.md
+++ b/session-notes/session-notes-YYYY-MM-DD.md
@@ -1,5 +1,5 @@
-# Session Date: YYYY-MM-DD
-## Co-Authors
+
+## Active Co-Authors
 
 ## Inactive Co-Authors
 Co-Authored-By: Nathaniel Herman <nathaniel.herman@gmail.com>

From a41358a7153b70f8b6c7fcbcf1ff996259d74707 Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Fri, 15 Dec 2023 04:26:32 -0500
Subject: [PATCH 37/51] . r Tweak heder regex's and reuse them across
 functions.

---
 .../session_notes_cleaner.py                  | 42 +++++++++++++++----
 tests/test_session_notes_cleaner.py           | 16 +++++--
 2 files changed, 46 insertions(+), 12 deletions(-)

diff --git a/src/session_notes_cleanup/session_notes_cleaner.py b/src/session_notes_cleanup/session_notes_cleaner.py
index a9d7c95..afe67ba 100644
--- a/src/session_notes_cleanup/session_notes_cleaner.py
+++ b/src/session_notes_cleanup/session_notes_cleaner.py
@@ -3,32 +3,55 @@
 import shutil
 import sys
 
+inactive_co_author_header_pattern = r'^#+\s*Inactive\s(Co-Authors)?.*$'
+
+active_co_author_header_pattern = r'^#+\s*(Active Co-Authors|Co-Authors \(This Session\)).*$'
+
 
 class SessionNotesCleaner:
     def __init__(self):
         pass
 
     def contains_inactive_coauthors(self, text):
-        return bool(re.search(r'^#+\s*Inactive( Co-Authors)?', text, re.IGNORECASE | re.MULTILINE))
+        return bool(re.search(inactive_co_author_header_pattern, text,
+                              flags=re.IGNORECASE | re.MULTILINE))
 
     def delete_inactive_coauthors(self, text):
-        return re.sub(r'^#+\s*Inactive( Co-Authors)?.*?(?=^#|\Z)', '', text,
+        return re.sub(r'^#+\s*Inactive Co-Authors.*?(?=^#|\Z)', '', text,
                       flags=re.IGNORECASE | re.MULTILINE | re.DOTALL)
 
     def contains_active_coauthors(self, text):
-        return bool(re.search(r'^#+\s*(Active )?Co-Authors', text, re.IGNORECASE | re.MULTILINE))
+        return bool(re.search(active_co_author_header_pattern, text,
+                              flags=re.IGNORECASE | re.MULTILINE))
 
     def standardize_coauthor_heading(self, text):
-        return re.sub(r'^#+\s*.*?((?:Inactive\s+)?)\s*Co-?Author.*', r'## \1Co-Authors',
-                      text,
-                      flags=re.IGNORECASE | re.MULTILINE)
+        # Co-Authors (This Session)
+        # Active Co-Authors
+        # active_co_author_search_pattern = r'^#+\s*((?:Active\s+)?)Co-?Authors.*$'
+        active_co_author_search_pattern = active_co_author_header_pattern
+        active_co_author_replace_pattern = r'## Co-Authors'
+        standardized_text_for_active_authors = \
+            re.sub(active_co_author_search_pattern, active_co_author_replace_pattern, text,
+                   flags=re.IGNORECASE | re.MULTILINE)
+
+        # Inactive Co-Authors
+        # Inactive
+        inactive_co_author_search_pattern = inactive_co_author_header_pattern
+        inactive_co_author_replace_pattern = r'## Inactive Co-Authors'
+        standardized_text_for_active_and_inactive_authors \
+            = re.sub(inactive_co_author_search_pattern, inactive_co_author_replace_pattern,
+                     standardized_text_for_active_authors,
+                     flags=re.IGNORECASE | re.MULTILINE)
+
+        return standardized_text_for_active_and_inactive_authors
 
     def remove_coauthor_headings(self, text):
         # Regular expression to match 1st and 2nd level headings with "Co-Authors"
         # Assumes Markdown formatting where 1st level is '# ' and 2nd level is '## '
         standard_text = self.standardize_coauthor_heading(text)
         pattern = r'^#{1,2}\s*Co-Authors.*$\n?'
-        cleaned_text = re.sub(pattern, '', standard_text, flags=re.IGNORECASE | re.MULTILINE)
+        cleaned_text = re.sub(pattern, '', standard_text,
+                              flags=re.IGNORECASE | re.MULTILINE)
 
         return cleaned_text
 
@@ -58,8 +81,9 @@ def cleanup_contents(self, text, session_date):
         if not self.contains_session_date(text):
             text = f"# Session Date: {session_date}\n" + text
         text = self.standardize_coauthor_heading(text)
-        if self.contains_active_coauthors(text) and self.contains_inactive_coauthors(text):
-            text = self.delete_inactive_coauthors(text)
+        # if self.contains_active_coauthors(text) and self.contains_inactive_coauthors(text):
+        text = self.delete_inactive_coauthors(text)
+
         text = self.remove_coauthor_headings(text)
         text = self.add_coauthor_heading_before_co_authored_by_list(text)
         return text
diff --git a/tests/test_session_notes_cleaner.py b/tests/test_session_notes_cleaner.py
index 4d24b53..4452c13 100644
--- a/tests/test_session_notes_cleaner.py
+++ b/tests/test_session_notes_cleaner.py
@@ -38,16 +38,26 @@ def test_delete_inactive_coauthors(self):
         verify(clean_text)
 
     def test_normalize_coauthor_heading(self):
+        text = ""
+        text += "## Co-Authors (This Session)\n"
+        text += "## Active Co-Authors\n"
+        text += "\n"
+        text += "## Inactive Co-Authors\n"
+        text += "## Inactive\n"
+
         cleaner = SessionNotesCleaner()
-        text = "## Coauthors\n## Active Co-Authors\n## Today's Co-Authors\n## Co-Authors (today)\n"
-        text += "## Inactive\n## Inactive Co-Authors\n## Inactive CoAuthors\n"
         clean_text = cleaner.standardize_coauthor_heading(text)
         acceptance_text = f'Before\n{text}====\nAfter\n{clean_text}====\n'
         verify(acceptance_text)
 
     def test_remove_coauthor_headings(self):
         cleaner = SessionNotesCleaner()
-        text = "## Coauthors\n## Facilitator\n## Active Co-Authors\n## Today's Co-Authors\n## Co-Authors (today)\n"
+        text = ""
+        text += "## Co-Authors (This Session)\n"
+        text += "## Active Co-Authors\n"
+        text += "\n"
+        text += "## Inactive Co-Authors\n"
+        text += "## Inactive\n"
         clean_text = cleaner.remove_coauthor_headings(text)
         acceptance_text = f'Before\n{text}====\nAfter\n{clean_text}====\n'
         verify(acceptance_text)

From 987bef4135cb189b6234e5e7779f071d28ce43cc Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Fri, 15 Dec 2023 04:35:42 -0500
Subject: [PATCH 38/51] . F Cleaned all session files!!!! Task DONE!

---
 session-notes/session-notes-2022-10-13.md     |  1 +
 session-notes/session-notes-2022-10-20.md     |  1 +
 session-notes/session-notes-2022-11-03.md     |  1 +
 session-notes/session-notes-2022-11-10.md     |  1 +
 session-notes/session-notes-2022-11-24.md     |  1 +
 session-notes/session-notes-2022-12-01.md     |  1 +
 session-notes/session-notes-2022-12-08.md     |  1 +
 session-notes/session-notes-2022-12-15.md     |  1 +
 session-notes/session-notes-2022-12-22.md     |  1 +
 session-notes/session-notes-2023-01-05.md     |  1 +
 session-notes/session-notes-2023-01-12.md     |  1 +
 session-notes/session-notes-2023-01-19.md     |  1 +
 session-notes/session-notes-2023-01-26.md     |  1 +
 session-notes/session-notes-2023-02-02.md     |  2 ++
 session-notes/session-notes-2023-02-09.md     |  2 ++
 session-notes/session-notes-2023-02-16.md     |  2 ++
 session-notes/session-notes-2023-02-23.md     |  2 ++
 session-notes/session-notes-2023-03-02.md     |  2 ++
 session-notes/session-notes-2023-03-09.md     |  2 ++
 session-notes/session-notes-2023-03-16.md     |  2 ++
 .../session-notes-2023-03-16.session2.md      |  2 ++
 session-notes/session-notes-2023-03-23.md     |  2 ++
 session-notes/session-notes-2023-03-30.md     |  2 ++
 session-notes/session-notes-2023-04-06.md     | 15 ++----------
 session-notes/session-notes-2023-04-13.md     |  2 ++
 session-notes/session-notes-2023-04-27.md     | 16 ++-----------
 session-notes/session-notes-2023-05-04.md     | 15 ++----------
 session-notes/session-notes-2023-05-11.md     |  4 ++--
 session-notes/session-notes-2023-05-18.md     | 17 ++-----------
 session-notes/session-notes-2023-05-25.md     | 17 ++-----------
 session-notes/session-notes-2023-06-01.md     | 18 ++------------
 session-notes/session-notes-2023-06-08.md     | 19 ++-------------
 session-notes/session-notes-2023-06-15.md     | 19 ++-------------
 session-notes/session-notes-2023-06-22.md     | 19 ++-------------
 session-notes/session-notes-2023-07-06.md     | 19 ++-------------
 session-notes/session-notes-2023-07-13.md     | 19 ++-------------
 session-notes/session-notes-2023-07-20.md     | 18 ++------------
 session-notes/session-notes-2023-07-27.md     |  4 ++--
 session-notes/session-notes-2023-08-17.md     | 21 ++--------------
 session-notes/session-notes-2023-08-24.md     | 19 +--------------
 session-notes/session-notes-2023-08-31.md     | 18 +-------------
 session-notes/session-notes-2023-09-07.md     |  2 +-
 session-notes/session-notes-2023-09-14.md     | 18 +-------------
 session-notes/session-notes-2023-09-21.md     | 19 +--------------
 session-notes/session-notes-2023-09-28.md     | 18 +-------------
 session-notes/session-notes-2023-10-05.md     | 18 +-------------
 session-notes/session-notes-2023-10-12.md     |  2 +-
 session-notes/session-notes-2023-10-19.md     |  3 ++-
 session-notes/session-notes-2023-11-09.md     | 16 +------------
 session-notes/session-notes-2023-11-16.md     | 18 +-------------
 session-notes/session-notes-2023-11-23.md     | 20 +---------------
 session-notes/session-notes-2023-12-07.md     | 24 +------------------
 session-notes/session-notes-2023-12-14.md     |  2 +-
 53 files changed, 80 insertions(+), 392 deletions(-)

diff --git a/session-notes/session-notes-2022-10-13.md b/session-notes/session-notes-2022-10-13.md
index 040685a..0847a00 100644
--- a/session-notes/session-notes-2022-10-13.md
+++ b/session-notes/session-notes-2022-10-13.md
@@ -1,3 +1,4 @@
+# Session Date: 2022-10-13
 # How did that feel?
 - Liked the Game, is cool. Works well as a timer (has bugs). Like a mini retro all the time.
 - Great Time
diff --git a/session-notes/session-notes-2022-10-20.md b/session-notes/session-notes-2022-10-20.md
index 7cf4e47..32c8030 100644
--- a/session-notes/session-notes-2022-10-20.md
+++ b/session-notes/session-notes-2022-10-20.md
@@ -1,3 +1,4 @@
+# Session Date: 2022-10-20
 # How did that feel?
 - Nice +1
 - Interesting
diff --git a/session-notes/session-notes-2022-11-03.md b/session-notes/session-notes-2022-11-03.md
index 8acf3b9..e0e1818 100644
--- a/session-notes/session-notes-2022-11-03.md
+++ b/session-notes/session-notes-2022-11-03.md
@@ -1,3 +1,4 @@
+# Session Date: 2022-11-03
 # How did that feel?
 - Enjoyed it, a bit of small talk in the beggining
 - Felt productive, made good progress
diff --git a/session-notes/session-notes-2022-11-10.md b/session-notes/session-notes-2022-11-10.md
index 4a60379..448a7bc 100644
--- a/session-notes/session-notes-2022-11-10.md
+++ b/session-notes/session-notes-2022-11-10.md
@@ -1,3 +1,4 @@
+# Session Date: 2022-11-10
 # How did that feel?
 - I like working on Testinfrastructure
     - Nice engineering challenge
diff --git a/session-notes/session-notes-2022-11-24.md b/session-notes/session-notes-2022-11-24.md
index 831a77b..2620bb0 100644
--- a/session-notes/session-notes-2022-11-24.md
+++ b/session-notes/session-notes-2022-11-24.md
@@ -1,3 +1,4 @@
+# Session Date: 2022-11-24
 # How did that feel?
 - frustrating +1
 - happy that we found the cause in the end +1
diff --git a/session-notes/session-notes-2022-12-01.md b/session-notes/session-notes-2022-12-01.md
index 09e26a3..dca2fe0 100644
--- a/session-notes/session-notes-2022-12-01.md
+++ b/session-notes/session-notes-2022-12-01.md
@@ -1,3 +1,4 @@
+# Session Date: 2022-12-01
 # How did that feel?
 - Challenging +100
 - Not Stable, constantly port in use
diff --git a/session-notes/session-notes-2022-12-08.md b/session-notes/session-notes-2022-12-08.md
index 5f90996..4d0f053 100644
--- a/session-notes/session-notes-2022-12-08.md
+++ b/session-notes/session-notes-2022-12-08.md
@@ -1,3 +1,4 @@
+# Session Date: 2022-12-08
 # Goal
 
 - Fix inconsistent test failures around the wsserver
diff --git a/session-notes/session-notes-2022-12-15.md b/session-notes/session-notes-2022-12-15.md
index dadb559..3c0803b 100644
--- a/session-notes/session-notes-2022-12-15.md
+++ b/session-notes/session-notes-2022-12-15.md
@@ -1,3 +1,4 @@
+# Session Date: 2022-12-15
 # Goal
 
 - curios to test the rotation issue again manually
diff --git a/session-notes/session-notes-2022-12-22.md b/session-notes/session-notes-2022-12-22.md
index 4e526eb..cfe14ca 100644
--- a/session-notes/session-notes-2022-12-22.md
+++ b/session-notes/session-notes-2022-12-22.md
@@ -1,3 +1,4 @@
+# Session Date: 2022-12-22
 # Goal
 
 - [X] !! potential bug: rotate button should not use rotateToTarget
diff --git a/session-notes/session-notes-2023-01-05.md b/session-notes/session-notes-2023-01-05.md
index 9b1f19c..684fa5a 100644
--- a/session-notes/session-notes-2023-01-05.md
+++ b/session-notes/session-notes-2023-01-05.md
@@ -1,3 +1,4 @@
+# Session Date: 2023-01-05
 # Goal
 
 - [x] For next time we could take a look at this one:
diff --git a/session-notes/session-notes-2023-01-12.md b/session-notes/session-notes-2023-01-12.md
index 7022d1c..6863504 100644
--- a/session-notes/session-notes-2023-01-12.md
+++ b/session-notes/session-notes-2023-01-12.md
@@ -1,3 +1,4 @@
+# Session Date: 2023-01-12
 # Goal
 - Bug: Game ID should be in the URL
 - Exploratory testing
diff --git a/session-notes/session-notes-2023-01-19.md b/session-notes/session-notes-2023-01-19.md
index 0280569..0071db8 100644
--- a/session-notes/session-notes-2023-01-19.md
+++ b/session-notes/session-notes-2023-01-19.md
@@ -1,3 +1,4 @@
+# Session Date: 2023-01-19
 # Goal
 - Limit number of points to 3 per role
 - Exploratory testing
diff --git a/session-notes/session-notes-2023-01-26.md b/session-notes/session-notes-2023-01-26.md
index 12d55a5..7697616 100644
--- a/session-notes/session-notes-2023-01-26.md
+++ b/session-notes/session-notes-2023-01-26.md
@@ -1,3 +1,4 @@
+# Session Date: 2023-01-26
 # Goal
 - Exploratory testing
     - A: which part? Q: all the app
diff --git a/session-notes/session-notes-2023-02-02.md b/session-notes/session-notes-2023-02-02.md
index c83ba12..1c43b37 100644
--- a/session-notes/session-notes-2023-02-02.md
+++ b/session-notes/session-notes-2023-02-02.md
@@ -1,3 +1,5 @@
+# Session Date: 2023-02-02
+## Co-Authors
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
diff --git a/session-notes/session-notes-2023-02-09.md b/session-notes/session-notes-2023-02-09.md
index 0d33c23..831a825 100644
--- a/session-notes/session-notes-2023-02-09.md
+++ b/session-notes/session-notes-2023-02-09.md
@@ -1,3 +1,5 @@
+# Session Date: 2023-02-09
+## Co-Authors
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
 Co-Authored-By: Rea <reasu@protonmail.com>
diff --git a/session-notes/session-notes-2023-02-16.md b/session-notes/session-notes-2023-02-16.md
index deca73e..c65be34 100644
--- a/session-notes/session-notes-2023-02-16.md
+++ b/session-notes/session-notes-2023-02-16.md
@@ -1,3 +1,5 @@
+# Session Date: 2023-02-16
+## Co-Authors
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 
diff --git a/session-notes/session-notes-2023-02-23.md b/session-notes/session-notes-2023-02-23.md
index a57b769..b84c3f2 100644
--- a/session-notes/session-notes-2023-02-23.md
+++ b/session-notes/session-notes-2023-02-23.md
@@ -1,3 +1,5 @@
+# Session Date: 2023-02-23
+## Co-Authors
 Co-Authored-By: Rea <reasu@protonmail.com>
 Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
diff --git a/session-notes/session-notes-2023-03-02.md b/session-notes/session-notes-2023-03-02.md
index 56abc86..fd0215a 100644
--- a/session-notes/session-notes-2023-03-02.md
+++ b/session-notes/session-notes-2023-03-02.md
@@ -1,3 +1,5 @@
+# Session Date: 2023-03-02
+## Co-Authors
 Co-Authored-By: arrockt <cariari385@gmail.com>
 Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
 Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
diff --git a/session-notes/session-notes-2023-03-09.md b/session-notes/session-notes-2023-03-09.md
index 76fe770..1581570 100644
--- a/session-notes/session-notes-2023-03-09.md
+++ b/session-notes/session-notes-2023-03-09.md
@@ -1,3 +1,5 @@
+# Session Date: 2023-03-09
+## Co-Authors
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
diff --git a/session-notes/session-notes-2023-03-16.md b/session-notes/session-notes-2023-03-16.md
index df3ef61..aa9a26d 100644
--- a/session-notes/session-notes-2023-03-16.md
+++ b/session-notes/session-notes-2023-03-16.md
@@ -1,3 +1,5 @@
+# Session Date: 2023-03-16
+## Co-Authors
 Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
diff --git a/session-notes/session-notes-2023-03-16.session2.md b/session-notes/session-notes-2023-03-16.session2.md
index 464882e..47c0202 100644
--- a/session-notes/session-notes-2023-03-16.session2.md
+++ b/session-notes/session-notes-2023-03-16.session2.md
@@ -1,3 +1,5 @@
+# Session Date: 2023-03-16
+## Co-Authors
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 
 # Agenda
diff --git a/session-notes/session-notes-2023-03-23.md b/session-notes/session-notes-2023-03-23.md
index 6d3b070..35671a6 100644
--- a/session-notes/session-notes-2023-03-23.md
+++ b/session-notes/session-notes-2023-03-23.md
@@ -1,3 +1,5 @@
+# Session Date: 2023-03-23
+## Co-Authors
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
diff --git a/session-notes/session-notes-2023-03-30.md b/session-notes/session-notes-2023-03-30.md
index 6aaafc2..7eeed6d 100644
--- a/session-notes/session-notes-2023-03-30.md
+++ b/session-notes/session-notes-2023-03-30.md
@@ -1,4 +1,6 @@
+# Session Date: 2023-03-30
 Session 1:
+## Co-Authors
 Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
diff --git a/session-notes/session-notes-2023-04-06.md b/session-notes/session-notes-2023-04-06.md
index 18d83b5..c31ca32 100644
--- a/session-notes/session-notes-2023-04-06.md
+++ b/session-notes/session-notes-2023-04-06.md
@@ -1,22 +1,11 @@
+# Session Date: 2023-04-06
 ## Active
 
+## Co-Authors
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 
-## Inactive
-
-Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
-Co-Authored-By: arrockt <cariari385@gmail.com>
-Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
-Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
-Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
-Co-Authored-By: Idan Melamed <idanmel@gmail.com>
-Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
-Co-Authored-By: Rea <reasu@protonmail.com>
-Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
-Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
-
 # Agenda
 
 ## Bond (~~15~~60 min.)
diff --git a/session-notes/session-notes-2023-04-13.md b/session-notes/session-notes-2023-04-13.md
index 93c9abe..e47d2fd 100644
--- a/session-notes/session-notes-2023-04-13.md
+++ b/session-notes/session-notes-2023-04-13.md
@@ -1,3 +1,5 @@
+# Session Date: 2023-04-13
+## Co-Authors
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
diff --git a/session-notes/session-notes-2023-04-27.md b/session-notes/session-notes-2023-04-27.md
index fb78505..95d6520 100644
--- a/session-notes/session-notes-2023-04-27.md
+++ b/session-notes/session-notes-2023-04-27.md
@@ -1,23 +1,11 @@
-# Co-Authors (This Session)
+# Session Date: 2023-04-27
 
+## Co-Authors
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 
-## Active Co-Authors
-
-## Inactive Co-Authors
-
-Co-Authored-By: arrockt <cariari385@gmail.com>
-Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
-Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
-Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
-Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
-Co-Authored-By: Idan Melamed <idanmel@gmail.com>
-Co-Authored-By: Rea <reasu@protonmail.com>
-Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
-Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
 
 # Agenda
 
diff --git a/session-notes/session-notes-2023-05-04.md b/session-notes/session-notes-2023-05-04.md
index 64983ce..6c7075f 100644
--- a/session-notes/session-notes-2023-05-04.md
+++ b/session-notes/session-notes-2023-05-04.md
@@ -1,24 +1,13 @@
-# Co-Authors (This Session)
+# Session Date: 2023-05-04
 
-## Active Co-Authors
 
+## Co-Authors
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 
-## Inactive Co-Authors
-
-Co-Authored-By: arrockt <cariari385@gmail.com>
-Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
-Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
-Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
-Co-Authored-By: Idan Melamed <idanmel@gmail.com>
-Co-Authored-By: Rea <reasu@protonmail.com>
-Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
-Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
-
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-05-11.md b/session-notes/session-notes-2023-05-11.md
index bf0a18a..6cc68e1 100644
--- a/session-notes/session-notes-2023-05-11.md
+++ b/session-notes/session-notes-2023-05-11.md
@@ -1,7 +1,7 @@
-# Co-Authors (This Session)
+# Session Date: 2023-05-11
 
-## Active Co-Authors
 
+## Co-Authors
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
diff --git a/session-notes/session-notes-2023-05-18.md b/session-notes/session-notes-2023-05-18.md
index c05b157..a7400d1 100644
--- a/session-notes/session-notes-2023-05-18.md
+++ b/session-notes/session-notes-2023-05-18.md
@@ -1,24 +1,11 @@
-# Co-Authors (This Session)
+# Session Date: 2023-05-18
 
-## Active Co-Authors
 
+## Co-Authors
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 
-## Inactive Co-Authors
-
-Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
-Co-Authored-By: arrockt <cariari385@gmail.com>
-Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
-Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
-Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
-Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
-Co-Authored-By: Idan Melamed <idanmel@gmail.com>
-Co-Authored-By: Rea <reasu@protonmail.com>
-Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
-Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
-
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-05-25.md b/session-notes/session-notes-2023-05-25.md
index 74f2945..cf74a0b 100644
--- a/session-notes/session-notes-2023-05-25.md
+++ b/session-notes/session-notes-2023-05-25.md
@@ -1,25 +1,12 @@
-# Co-Authors (This Session)
+# Session Date: 2023-05-25
 
-## Active Co-Authors
 
+## Co-Authors
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
 
-## Inactive Co-Authors
-
-Co-Authored-By: arrockt <cariari385@gmail.com>
-Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
-Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
-Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
-Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
-Co-Authored-By: Idan Melamed <idanmel@gmail.com>
-Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
-Co-Authored-By: Rea <reasu@protonmail.com>
-Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
-Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
-
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-06-01.md b/session-notes/session-notes-2023-06-01.md
index f0ccc50..9e58252 100644
--- a/session-notes/session-notes-2023-06-01.md
+++ b/session-notes/session-notes-2023-06-01.md
@@ -1,27 +1,13 @@
-# Co-Authors (This Session)
+# Session Date: 2023-06-01
 
-## Active Co-Authors
 
+## Co-Authors
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
 Co-Authored-By: David Campey <campey@gmail.com>
 Co-Authored-by: Zac Ball <zac156@gmail.com>
 
-## Inactive Co-Authors
-
-Co-Authored-By: arrockt <cariari385@gmail.com>
-Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
-Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
-Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
-Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
-Co-Authored-By: Idan Melamed <idanmel@gmail.com>
-Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
-Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
-Co-Authored-By: Rea <reasu@protonmail.com>
-Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
-Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
-
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-06-08.md b/session-notes/session-notes-2023-06-08.md
index a3bc2c4..42844d3 100644
--- a/session-notes/session-notes-2023-06-08.md
+++ b/session-notes/session-notes-2023-06-08.md
@@ -1,28 +1,13 @@
-# Co-Authors (This Session)
+# Session Date: 2023-06-08
 
-## Active Co-Authors
 
+## Co-Authors
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
 Co-Authored-By: David Campey <campey@gmail.com>
 
-## Inactive Co-Authors
-
-Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
-Co-Authored-By: arrockt <cariari385@gmail.com>
-Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
-Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
-Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
-Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
-Co-Authored-By: Idan Melamed <idanmel@gmail.com>
-Co-Authored-By: Rea <reasu@protonmail.com>
-Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
-Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
-Co-Authored-By: David Campey <campey@gmail.com>
-Co-Authored-by: Zac Ball <zac156@gmail.com>
-
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-06-15.md b/session-notes/session-notes-2023-06-15.md
index 52143ab..7d36888 100644
--- a/session-notes/session-notes-2023-06-15.md
+++ b/session-notes/session-notes-2023-06-15.md
@@ -1,28 +1,13 @@
-# Co-Authors (This Session)
+# Session Date: 2023-06-15
 
-## Active Co-Authors
 
+## Co-Authors
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: Nathaniel ...
 
-## Inactive Co-Authors
-
-Co-Authored-By: arrockt <cariari385@gmail.com>
-Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
-Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
-Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
-Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
-Co-Authored-By: Idan Melamed <idanmel@gmail.com>
-Co-Authored-By: Rea <reasu@protonmail.com>
-Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
-Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
-Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
-Co-Authored-By: David Campey <campey@gmail.com>
-Co-Authored-by: Zac Ball <zac156@gmail.com>
-
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-06-22.md b/session-notes/session-notes-2023-06-22.md
index 5bcf65c..e644514 100644
--- a/session-notes/session-notes-2023-06-22.md
+++ b/session-notes/session-notes-2023-06-22.md
@@ -1,27 +1,12 @@
-# Co-Authors (This Session)
+# Session Date: 2023-06-22
 
-## Active Co-Authors
 
+## Co-Authors
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
 
-## Inactive Co-Authors
-
-Co-Authored-By: arrockt <cariari385@gmail.com>
-Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
-Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
-Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
-Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
-Co-Authored-By: Idan Melamed <idanmel@gmail.com>
-Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
-Co-Authored-By: Rea <reasu@protonmail.com>
-Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
-Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
-Co-Authored-By: David Campey <campey@gmail.com>
-Co-Authored-by: Zac Ball <zac156@gmail.com>
-
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-07-06.md b/session-notes/session-notes-2023-07-06.md
index fbb5f7c..cf3c991 100644
--- a/session-notes/session-notes-2023-07-06.md
+++ b/session-notes/session-notes-2023-07-06.md
@@ -1,27 +1,12 @@
-# Co-Authors (This Session)
+# Session Date: 2023-07-06
 
-## Active Co-Authors
 
+## Co-Authors
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 
-## Inactive Co-Authors
-
-Co-Authored-By: arrockt <cariari385@gmail.com>
-Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
-Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
-Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
-Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
-Co-Authored-By: Idan Melamed <idanmel@gmail.com>
-Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
-Co-Authored-By: Rea <reasu@protonmail.com>
-Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
-Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
-Co-Authored-By: David Campey <campey@gmail.com>
-Co-Authored-by: Zac Ball <zac156@gmail.com>
-
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-07-13.md b/session-notes/session-notes-2023-07-13.md
index 9f5cda2..1340c88 100644
--- a/session-notes/session-notes-2023-07-13.md
+++ b/session-notes/session-notes-2023-07-13.md
@@ -1,27 +1,12 @@
-# Co-Authors (This Session)
+# Session Date: 2023-07-13
 
-## Active Co-Authors
 
+## Co-Authors
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 
-## Inactive Co-Authors
-
-Co-Authored-By: arrockt <cariari385@gmail.com>
-Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
-Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
-Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
-Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
-Co-Authored-By: Idan Melamed <idanmel@gmail.com>
-Co-Authored-By: Rea <reasu@protonmail.com>
-Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
-Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
-Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
-Co-Authored-By: David Campey <campey@gmail.com>
-Co-Authored-by: Zac Ball <zac156@gmail.com>
-
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-07-20.md b/session-notes/session-notes-2023-07-20.md
index bb35606..3af7975 100644
--- a/session-notes/session-notes-2023-07-20.md
+++ b/session-notes/session-notes-2023-07-20.md
@@ -1,27 +1,13 @@
-# Co-Authors (This Session)
+# Session Date: 2023-07-20
 
-## Active Co-Authors
 
+## Co-Authors
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
 
-## Inactive Co-Authors
-
-Co-Authored-By: arrockt <cariari385@gmail.com>
-Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
-Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
-Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
-Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
-Co-Authored-By: Idan Melamed <idanmel@gmail.com>
-Co-Authored-By: Rea <reasu@protonmail.com>
-Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
-Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
-Co-Authored-By: David Campey <campey@gmail.com>
-Co-Authored-by: Zac Ball <zac156@gmail.com>
-
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-07-27.md b/session-notes/session-notes-2023-07-27.md
index 51cf1db..03c2527 100644
--- a/session-notes/session-notes-2023-07-27.md
+++ b/session-notes/session-notes-2023-07-27.md
@@ -1,6 +1,6 @@
-# Co-Authors (This Session)
+# Session Date: 2023-07-27
 
-## Active Co-Authors
+## Co-Authors
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
diff --git a/session-notes/session-notes-2023-08-17.md b/session-notes/session-notes-2023-08-17.md
index ea4fd96..aa5cbe7 100644
--- a/session-notes/session-notes-2023-08-17.md
+++ b/session-notes/session-notes-2023-08-17.md
@@ -1,28 +1,11 @@
-# Co-Authors (This Session)
+# Session Date: 2023-08-17
 
-## Active Co-Authors
 
+## Co-Authors
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 
-## Inactive Co-Authors
-
-Co-Authored-By: arrockt <cariari385@gmail.com>
-Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
-Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
-Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
-Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
-Co-Authored-By: Idan Melamed <idanmel@gmail.com>
-Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
-Co-Authored-By: Rea <reasu@protonmail.com>
-Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
-Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
-Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
-Co-Authored-By: David Campey <campey@gmail.com>
-Co-Authored-by: Zac Ball <zac156@gmail.com>
-Co-Authored-By: Kitastro <admin@metafor.co.za>
-
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-08-24.md b/session-notes/session-notes-2023-08-24.md
index 11f1c9d..d2ac8e7 100644
--- a/session-notes/session-notes-2023-08-24.md
+++ b/session-notes/session-notes-2023-08-24.md
@@ -1,28 +1,11 @@
 # Session Date: 2023-08-24
 
-## Active Co-Authors
 
+## Co-Authors
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 
-## Inactive Co-Authors
-
-Co-Authored-By: arrockt <cariari385@gmail.com>
-Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
-Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
-Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
-Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
-Co-Authored-By: Idan Melamed <idanmel@gmail.com>
-Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
-Co-Authored-By: Rea <reasu@protonmail.com>
-Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
-Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
-Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
-Co-Authored-By: David Campey <campey@gmail.com>
-Co-Authored-by: Zac Ball <zac156@gmail.com>
-Co-Authored-By: Kitastro <admin@metafor.co.za>
-
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-08-31.md b/session-notes/session-notes-2023-08-31.md
index 527ce6b..cb7a086 100644
--- a/session-notes/session-notes-2023-08-31.md
+++ b/session-notes/session-notes-2023-08-31.md
@@ -1,28 +1,12 @@
 # Session Date: 2023-08-31
 
-## Active Co-Authors
 
+## Co-Authors
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 
-## Inactive Co-Authors
-
-Co-Authored-By: arrockt <cariari385@gmail.com>
-Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
-Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
-Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
-Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
-Co-Authored-By: Idan Melamed <idanmel@gmail.com>
-Co-Authored-By: Rea <reasu@protonmail.com>
-Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
-Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
-Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
-Co-Authored-By: David Campey <campey@gmail.com>
-Co-Authored-by: Zac Ball <zac156@gmail.com>
-Co-Authored-By: Kitastro <admin@metafor.co.za>
-
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-09-07.md b/session-notes/session-notes-2023-09-07.md
index c8274b5..7638fdc 100644
--- a/session-notes/session-notes-2023-09-07.md
+++ b/session-notes/session-notes-2023-09-07.md
@@ -1,7 +1,7 @@
 # Session Date: 2023-09-07
 
-## Active Co-Authors
 
+## Co-Authors
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
diff --git a/session-notes/session-notes-2023-09-14.md b/session-notes/session-notes-2023-09-14.md
index 0bca662..50386fb 100644
--- a/session-notes/session-notes-2023-09-14.md
+++ b/session-notes/session-notes-2023-09-14.md
@@ -1,28 +1,12 @@
 # Session Date: 2023-09-14
 
-## Active Co-Authors
 
+## Co-Authors
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
 
-## Inactive Co-Authors
-
-Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
-Co-Authored-By: arrockt <cariari385@gmail.com>
-Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
-Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
-Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
-Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
-Co-Authored-By: Idan Melamed <idanmel@gmail.com>
-Co-Authored-By: Rea <reasu@protonmail.com>
-Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
-Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
-Co-Authored-By: David Campey <campey@gmail.com>
-Co-Authored-by: Zac Ball <zac156@gmail.com>
-Co-Authored-By: Kitastro <admin@metafor.co.za>
-
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-09-21.md b/session-notes/session-notes-2023-09-21.md
index 4ddc199..662ea25 100644
--- a/session-notes/session-notes-2023-09-21.md
+++ b/session-notes/session-notes-2023-09-21.md
@@ -1,27 +1,10 @@
 # Session Date: 2023-09-21
 
-## Active Co-Authors
+## Co-Authors
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
 
-## Inactive Co-Authors
-
-Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
-Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
-Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
-Co-Authored-By: arrockt <cariari385@gmail.com>
-Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
-Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
-Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
-Co-Authored-By: Idan Melamed <idanmel@gmail.com>
-Co-Authored-By: Rea <reasu@protonmail.com>
-Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
-Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
-Co-Authored-By: David Campey <campey@gmail.com>
-Co-Authored-by: Zac Ball <zac156@gmail.com>
-Co-Authored-By: Kitastro <admin@metafor.co.za>
-
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-09-28.md b/session-notes/session-notes-2023-09-28.md
index 71654ae..e5fa14c 100644
--- a/session-notes/session-notes-2023-09-28.md
+++ b/session-notes/session-notes-2023-09-28.md
@@ -1,29 +1,13 @@
 # Session Date: 2023-09-28
 
-## Active Co-Authors
 
+## Co-Authors
 Co-Authored-By: Woody Zuill <wzuill@yahoo.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
 Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
 
-## Inactive Co-Authors
-
-Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
-Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
-Co-Authored-By: arrockt <cariari385@gmail.com>
-Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
-Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
-Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
-Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
-Co-Authored-By: Idan Melamed <idanmel@gmail.com>
-Co-Authored-By: Rea <reasu@protonmail.com>
-Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
-Co-Authored-By: David Campey <campey@gmail.com>
-Co-Authored-by: Zac Ball <zac156@gmail.com>
-Co-Authored-By: Kitastro <admin@metafor.co.za>
-
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-10-05.md b/session-notes/session-notes-2023-10-05.md
index 04cc94a..d82cb8f 100644
--- a/session-notes/session-notes-2023-10-05.md
+++ b/session-notes/session-notes-2023-10-05.md
@@ -1,29 +1,13 @@
 # Session Date: 2023-10-12
 
-## Active Co-Authors
 
+## Co-Authors
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
 
-## Inactive Co-Authors
-
-Co-Authored-By: arrockt <cariari385@gmail.com>
-Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
-Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
-Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
-Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
-Co-Authored-By: Idan Melamed <idanmel@gmail.com>
-Co-Authored-By: Rea <reasu@protonmail.com>
-Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
-Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
-Co-Authored-By: David Campey <campey@gmail.com>
-Co-Authored-by: Zac Ball <zac156@gmail.com>
-Co-Authored-By: Kitastro <admin@metafor.co.za>
-Co-Authored-By: Woody Zuill <wzuill@yahoo.com>
-
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-10-12.md b/session-notes/session-notes-2023-10-12.md
index 4974922..ba52ab0 100644
--- a/session-notes/session-notes-2023-10-12.md
+++ b/session-notes/session-notes-2023-10-12.md
@@ -1,6 +1,6 @@
 # Session Date: 2023-10-12
 
-## Active Co-Authors
+## Co-Authors
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
diff --git a/session-notes/session-notes-2023-10-19.md b/session-notes/session-notes-2023-10-19.md
index d43ed9f..0712a39 100644
--- a/session-notes/session-notes-2023-10-19.md
+++ b/session-notes/session-notes-2023-10-19.md
@@ -1,5 +1,6 @@
+# Session Date: 2023-10-19
 
-## Active Co-Authors
+## Co-Authors
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
diff --git a/session-notes/session-notes-2023-11-09.md b/session-notes/session-notes-2023-11-09.md
index 4c328d8..1e64114 100644
--- a/session-notes/session-notes-2023-11-09.md
+++ b/session-notes/session-notes-2023-11-09.md
@@ -1,6 +1,6 @@
 # Session Date: 2023-11-09
 
-## Active Co-Authors
+## Co-Authors
 Co-Authored-By: Blaise Pabon <blaise@gmail.com>
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
@@ -10,20 +10,6 @@ Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
 Co-Authored-By: Idan Melamed <idanmel@gmail.com>
 Co-Authored-By: Llewellyn Falco <llewellyn.falco@gmail.com>
 
-## Inactive Co-Authors
-Co-Authored-By: arrockt <cariari385@gmail.com>
-Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
-Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
-Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
-Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
-Co-Authored-By: Rea <reasu@protonmail.com>
-Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
-Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
-Co-Authored-By: David Campey <campey@gmail.com>
-Co-Authored-by: Zac Ball <zac156@gmail.com>
-Co-Authored-By: Kitastro <admin@metafor.co.za>
-Co-Authored-By: Woody Zuill <wzuill@yahoo.com>
-
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-11-16.md b/session-notes/session-notes-2023-11-16.md
index 5ae17dd..348ee66 100644
--- a/session-notes/session-notes-2023-11-16.md
+++ b/session-notes/session-notes-2023-11-16.md
@@ -1,6 +1,6 @@
 # Session Date: 2023-11-16
 
-## Active Co-Authors
+## Co-Authors
 Co-Authored-By: Blaise Pabon <blaise@gmail.com>
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
@@ -8,22 +8,6 @@ Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com
 Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
 Co-Authored-By: Idan Melamed <idanmel@gmail.com>
 
-## Inactive Co-Authors
-Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
-Co-Authored-By: arrockt <cariari385@gmail.com>
-Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
-Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
-Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
-Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
-Co-Authored-By: Rea <reasu@protonmail.com>
-Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
-Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
-Co-Authored-By: David Campey <campey@gmail.com>
-Co-Authored-by: Zac Ball <zac156@gmail.com>
-Co-Authored-By: Kitastro <admin@metafor.co.za>
-Co-Authored-By: Woody Zuill <wzuill@yahoo.com>
-Co-Authored-By: Llewellyn Falco <llewellyn.falco@gmail.com>
-
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-11-23.md b/session-notes/session-notes-2023-11-23.md
index c248a4a..5dbd342 100644
--- a/session-notes/session-notes-2023-11-23.md
+++ b/session-notes/session-notes-2023-11-23.md
@@ -1,29 +1,11 @@
 # Session Date: 2023-11-23
 
-## Active Co-Authors
+## Co-Authors
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
 
-## Inactive Co-Authors
-Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
-Co-Authored-By: Blaise Pabon <blaise@gmail.com>
-Co-Authored-By: arrockt <cariari385@gmail.com>
-Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
-Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
-Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
-Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
-Co-Authored-By: Idan Melamed <idanmel@gmail.com>
-Co-Authored-By: Rea <reasu@protonmail.com>
-Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
-Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
-Co-Authored-By: David Campey <campey@gmail.com>
-Co-Authored-by: Zac Ball <zac156@gmail.com>
-Co-Authored-By: Kitastro <admin@metafor.co.za>
-Co-Authored-By: Woody Zuill <wzuill@yahoo.com>
-Co-Authored-By: Llewellyn Falco <llewellyn.falco@gmail.com>
-
 # Agenda
 
 ## Bond (15 min.)
diff --git a/session-notes/session-notes-2023-12-07.md b/session-notes/session-notes-2023-12-07.md
index 1b96160..8409e27 100644
--- a/session-notes/session-notes-2023-12-07.md
+++ b/session-notes/session-notes-2023-12-07.md
@@ -1,6 +1,6 @@
 # Session Date: 2023-12-07
 
-## Active Co-Authors
+## Co-Authors
 Co-Authored-By: Nathaniel Herman <nathaniel.herman@gmail.com>
 Co-Authored-By: Blaise Pabon <blaise@gmail.com>
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
@@ -10,28 +10,6 @@ Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
 Co-Authored-By: Nathaniel Herman <nathaniel.herman@gmail.com>
 
 
-## Inactive Co-Authors
-Co-Authored-By: Blaise Pabon <blaise@gmail.com>
-Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>
-Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
-Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
-Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
-Co-Authored-By: 4dsherwood <4dsherwood@users.noreply.github.com>
-Co-Authored-By: arrockt <cariari385@gmail.com>
-Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
-Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
-Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
-Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
-Co-Authored-By: Idan Melamed <idanmel@gmail.com>
-Co-Authored-By: Rea <reasu@protonmail.com>
-Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
-Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
-Co-Authored-By: David Campey <campey@gmail.com>
-Co-Authored-by: Zac Ball <zac156@gmail.com>
-Co-Authored-By: Kitastro <admin@metafor.co.za>
-Co-Authored-By: Woody Zuill <wzuill@yahoo.com>
-Co-Authored-By: Llewellyn Falco <llewellyn.falco@gmail.com>
-
 # Agenda
 
 ## Bond (30 min.)
diff --git a/session-notes/session-notes-2023-12-14.md b/session-notes/session-notes-2023-12-14.md
index 074e734..c0e7ed3 100644
--- a/session-notes/session-notes-2023-12-14.md
+++ b/session-notes/session-notes-2023-12-14.md
@@ -2,7 +2,7 @@
 ## Facilitated by
  - Joel Silberman
 
-## Active Co-Authors
+## Co-Authors
 Co-Authored-By: Nathaniel Herman <nathaniel.herman@gmail.com>
 Co-Authored-By: Blaise Pabon <blaise@gmail.com>
 Co-Authored-By: Gregor Riegler <rieglerg85@gmail.com>

From e05a26430cab0b7a081bebccaad2ea5d4a35b60e Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Mon, 18 Dec 2023 18:23:57 -0500
Subject: [PATCH 39/51] . d Add TODO

---
 src/session_notes_cleanup/session_notes_cleaner.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/session_notes_cleanup/session_notes_cleaner.py b/src/session_notes_cleanup/session_notes_cleaner.py
index afe67ba..3c74fc0 100644
--- a/src/session_notes_cleanup/session_notes_cleaner.py
+++ b/src/session_notes_cleanup/session_notes_cleaner.py
@@ -4,9 +4,11 @@
 import sys
 
 inactive_co_author_header_pattern = r'^#+\s*Inactive\s(Co-Authors)?.*$'
-
 active_co_author_header_pattern = r'^#+\s*(Active Co-Authors|Co-Authors \(This Session\)).*$'
 
+# TODO
+# - Fix file that has no header before inactive co-authors
+# - Return codes similar to diff(1)
 
 class SessionNotesCleaner:
     def __init__(self):

From 0ef5a8e4da9146ce1fd0001dcec60d7c3a8ba09a Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Mon, 1 Jan 2024 18:44:08 -0500
Subject: [PATCH 40/51] Removed inactive contributer section that lacked header

---
 session-notes/session-notes-2023-04-13.md | 10 ----------
 1 file changed, 10 deletions(-)

diff --git a/session-notes/session-notes-2023-04-13.md b/session-notes/session-notes-2023-04-13.md
index e47d2fd..08a89de 100644
--- a/session-notes/session-notes-2023-04-13.md
+++ b/session-notes/session-notes-2023-04-13.md
@@ -5,16 +5,6 @@ Co-Authored-By: Nitsan Avni <nitsanav@gmail.com>
 Co-Authored-By: Michael R. Wolf <MichaelRWolf@att.net>
 Co-Authored-By: Joel Silberman <42779942+jcs-instructor@users.noreply.github.com>
 
-Co-Authored-By: arrockt <cariari385@gmail.com>
-Co-Authored-By: Austin Chadwick <austin.chadwick11@gmail.com>
-Co-Authored-By: Blessed538 <blesseddominic98@gmail.com>
-Co-Authored-By: Eddie Bush <eddie@craftsmanshipcounts.com>
-Co-Authored-By: Gabriel Mbaiorga <gabrielmbaiorga@gmail.com>
-Co-Authored-By: Idan Melamed <idanmel@gmail.com>
-Co-Authored-By: Rea <reasu@protonmail.com>
-Co-Authored-By: Tsvetan Tsvetanov <cpi.cecko@gmail.com>
-Co-Authored-By: Willem Larsen <willemlarsen@gmail.com>
-
 # Agenda
 
 ## Bond (15 min.)

From af6fbedcc1a9e95285ee884f8ac61d251bc37646 Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Mon, 1 Jan 2024 20:32:28 -0500
Subject: [PATCH 41/51] Update test_session_notes_cleaner.py

! t ChatGPT generated tests.  verify() uses MultiReporter
---
 tests/test_session_notes_cleaner.py | 81 ++++++++++++++++++++++-------
 1 file changed, 63 insertions(+), 18 deletions(-)

diff --git a/tests/test_session_notes_cleaner.py b/tests/test_session_notes_cleaner.py
index 4452c13..adef59e 100644
--- a/tests/test_session_notes_cleaner.py
+++ b/tests/test_session_notes_cleaner.py
@@ -3,11 +3,25 @@
 import unittest
 
 from approvaltests import verify
-
+# from approvaltests.core import approval
+from approvaltests.reporters import GenericDiffReporterFactory, ClipboardReporter, MultiReporter
 from src.session_notes_cleanup.session_notes_cleaner import SessionNotesCleaner
 
+default_reporter = GenericDiffReporterFactory().get_first_working()
+# approval.DEFAULT_REPORTER = default_reporter
+
+
+first_working_reporter = GenericDiffReporterFactory().get_first_working()
+clipboard_reporter = ClipboardReporter()
+# bc_reporter = GenericDiffReporterFactory().get("Beyond Compare")
+preferred_multi_reporter = MultiReporter(first_working_reporter, clipboard_reporter)
+
 
 class TestSessionNotesCleaner(unittest.TestCase):
+    # def setUp(self) -> None:
+
+    # self.addCleanup(first_working_reporter.report)
+
     def test_initialization(self):
         cleaner = SessionNotesCleaner()
         # Add assertions here to test initial conditions
@@ -35,7 +49,7 @@ def test_delete_inactive_coauthors(self):
         cleaner = SessionNotesCleaner()
         text = self.sample_file_contents()
         clean_text = cleaner.delete_inactive_coauthors(text)
-        verify(clean_text)
+        verify(clean_text, preferred_multi_reporter)
 
     def test_normalize_coauthor_heading(self):
         text = ""
@@ -48,7 +62,7 @@ def test_normalize_coauthor_heading(self):
         cleaner = SessionNotesCleaner()
         clean_text = cleaner.standardize_coauthor_heading(text)
         acceptance_text = f'Before\n{text}====\nAfter\n{clean_text}====\n'
-        verify(acceptance_text)
+        verify(acceptance_text, preferred_multi_reporter)
 
     def test_remove_coauthor_headings(self):
         cleaner = SessionNotesCleaner()
@@ -60,7 +74,7 @@ def test_remove_coauthor_headings(self):
         text += "## Inactive\n"
         clean_text = cleaner.remove_coauthor_headings(text)
         acceptance_text = f'Before\n{text}====\nAfter\n{clean_text}====\n'
-        verify(acceptance_text)
+        verify(acceptance_text, preferred_multi_reporter)
 
     def test_add_coauthor_heading_before_co_authored_by_list(self):
         cleaner = SessionNotesCleaner()
@@ -73,23 +87,53 @@ def test_add_coauthor_heading_before_co_authored_by_list(self):
         text += "Co-Authored-By: Jack\n"
         clean_text = cleaner.add_coauthor_heading_before_co_authored_by_list(text)
         acceptance_text = f'Before\n{text}====\nAfter\n{clean_text}====\n'
-        verify(acceptance_text)
+        verify(acceptance_text, preferred_multi_reporter)
+
+        # Import the function to be tested
+        # from your_script import get_date_from_filename
+
+        # Test suite for 'get_date_from_filename'
 
-    def test_cleanup_contents(self):
+    def test_get_date_from_filename(self):
         cleaner = SessionNotesCleaner()
-        text = self.sample_file_contents()
-        clean_text = cleaner.cleanup_contents(text, "2023-12-07")
-        verify(clean_text)
+
+        # Test with valid filenames
+        assert cleaner.get_date_from_filename("session-notes-2022-10-20.md") == "2022-10-20"
+        assert cleaner.get_date_from_filename("session-notes-2021-01-01.md") == "2021-01-01"
+
+        # Test with filenames that do not follow the expected pattern
+        assert cleaner.get_date_from_filename("session-notes.md") is None
+        assert cleaner.get_date_from_filename("notes-2022-10-20.md") is None
+        assert cleaner.get_date_from_filename("session-2022-10-20.md") is None
+
+        # Test with filenames that are close to the pattern but not exact
+        assert cleaner.get_date_from_filename("session-notes-2022-10-20.markdown") is None
+        assert cleaner.get_date_from_filename("session-notes-2022-13-01.md") is None  # Invalid month
+        assert cleaner.get_date_from_filename("session-notes-2022-00-10.md") is None  # Invalid month
+
+        # Test with edge cases
+        assert cleaner.get_date_from_filename("") is None
+        assert cleaner.get_date_from_filename(" ") is None
+
+    # Note: Replace 'your_script' with the name of the Python file where 'get_date_from_filename' is defined.
+
+
+def test_cleanup_contents(self):
+    cleaner = SessionNotesCleaner()
+    text = self.sample_file_contents()
+    clean_text = cleaner.cleanup_contents(text, "2023-12-07")
+    verify(clean_text, preferred_multi_reporter)
 
     @staticmethod
-    def strip_trailing_whitespace(text):
+    def strip_trailing_whitespace(multi_line_text):
         # Regular expression pattern to match trailing horizontal whitespace on each line, excluding newline
         pattern = r'[ \t]+\n'
         # Replace matched patterns with nothing (i.e., remove them)
-        return re.sub(pattern, '\n', text)
+        return re.sub(pattern, '\n', multi_line_text)
+
 
-    def sample_file_contents(self):
-        text = '''# Session Date: 2023-12-07
+def sample_file_contents(self):
+    text = '''# Session Date: 2023-12-07
 
 ## Active Co-Authors   
 Co-Authored-By: Nathaniel Herman <nathaniel.herman@gmail.com>   
@@ -174,10 +218,11 @@ def sample_file_contents(self):
     - 3. consider a checklist for newcomers (was a discussion about this)
     - 4. consider items in the backlog (reminders, what are we working on, etc.
 '''
-        return self.strip_trailing_whitespace(text)
+    return self.strip_trailing_whitespace(text)
 
-    def test_strip_trailing_whitespace(self):
-        text = '''Line with trailing spaces        
+
+def test_strip_trailing_whitespace(self):
+    text = '''Line with trailing spaces        
 Line with trailing tabs
     Line with 4 leading spaces
         Line with 2 leading tabs
@@ -189,8 +234,8 @@ def test_strip_trailing_whitespace(self):
     
 This is last line.                
 '''
-        stripped_text = self.strip_trailing_whitespace(text)
-        verify(stripped_text)
+    stripped_text = self.strip_trailing_whitespace(text)
+    verify(stripped_text, preferred_multi_reporter)
 
 
 if __name__ == '__main__':

From c569a1f677133a6e08339b859379101c786892e9 Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Wed, 3 Jan 2024 11:05:40 -0500
Subject: [PATCH 42/51] - f Tighten up RegExp to match date in filename

---
 src/session_notes_cleanup/session_notes_cleaner.py | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/src/session_notes_cleanup/session_notes_cleaner.py b/src/session_notes_cleanup/session_notes_cleaner.py
index 3c74fc0..818eb90 100644
--- a/src/session_notes_cleanup/session_notes_cleaner.py
+++ b/src/session_notes_cleanup/session_notes_cleaner.py
@@ -7,7 +7,6 @@
 active_co_author_header_pattern = r'^#+\s*(Active Co-Authors|Co-Authors \(This Session\)).*$'
 
 # TODO
-# - Fix file that has no header before inactive co-authors
 # - Return codes similar to diff(1)
 
 class SessionNotesCleaner:
@@ -66,7 +65,7 @@ def add_coauthor_heading_before_co_authored_by_list(self, text):
         return cleaned_text
 
     def get_date_from_filename(self, filename):
-        match = re.search(r'(\d{4}-\d{2}-\d{2})', filename, re.IGNORECASE)
+        match = re.search(r'^session-notes-(\d{4}-\d{2}-\d{2}).*[.]md$', filename)
         return match.group(1) if match else None
 
     def slurp_file(self, filename):

From fd4896dbda9ddf2cca46bad4591f309b9cbb9d1d Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Wed, 3 Jan 2024 11:07:55 -0500
Subject: [PATCH 43/51] - t Cleaned up AI-generated test cases

---
 tests/test_session_notes_cleaner.py | 56 ++++++++++++++---------------
 1 file changed, 28 insertions(+), 28 deletions(-)

diff --git a/tests/test_session_notes_cleaner.py b/tests/test_session_notes_cleaner.py
index adef59e..2e41e54 100644
--- a/tests/test_session_notes_cleaner.py
+++ b/tests/test_session_notes_cleaner.py
@@ -5,6 +5,7 @@
 from approvaltests import verify
 # from approvaltests.core import approval
 from approvaltests.reporters import GenericDiffReporterFactory, ClipboardReporter, MultiReporter
+
 from src.session_notes_cleanup.session_notes_cleaner import SessionNotesCleaner
 
 default_reporter = GenericDiffReporterFactory().get_first_working()
@@ -98,31 +99,31 @@ def test_get_date_from_filename(self):
         cleaner = SessionNotesCleaner()
 
         # Test with valid filenames
-        assert cleaner.get_date_from_filename("session-notes-2022-10-20.md") == "2022-10-20"
-        assert cleaner.get_date_from_filename("session-notes-2021-01-01.md") == "2021-01-01"
+        self.assertEqual(cleaner.get_date_from_filename("session-notes-2022-10-20.md"), "2022-10-20")
+        self.assertEqual(cleaner.get_date_from_filename("session-notes-2021-01-01.md"), "2021-01-01")
+        self.assertEqual(cleaner.get_date_from_filename("session-notes-2021-01-01-part2.md"), "2021-01-01")
 
         # Test with filenames that do not follow the expected pattern
-        assert cleaner.get_date_from_filename("session-notes.md") is None
-        assert cleaner.get_date_from_filename("notes-2022-10-20.md") is None
-        assert cleaner.get_date_from_filename("session-2022-10-20.md") is None
-
-        # Test with filenames that are close to the pattern but not exact
-        assert cleaner.get_date_from_filename("session-notes-2022-10-20.markdown") is None
-        assert cleaner.get_date_from_filename("session-notes-2022-13-01.md") is None  # Invalid month
-        assert cleaner.get_date_from_filename("session-notes-2022-00-10.md") is None  # Invalid month
-
-        # Test with edge cases
-        assert cleaner.get_date_from_filename("") is None
-        assert cleaner.get_date_from_filename(" ") is None
-
-    # Note: Replace 'your_script' with the name of the Python file where 'get_date_from_filename' is defined.
-
-
-def test_cleanup_contents(self):
-    cleaner = SessionNotesCleaner()
-    text = self.sample_file_contents()
-    clean_text = cleaner.cleanup_contents(text, "2023-12-07")
-    verify(clean_text, preferred_multi_reporter)
+        self.assertIsNone(cleaner.get_date_from_filename("session-notes.md"))  # no date
+        self.assertIsNone(cleaner.get_date_from_filename("Session-notes-2000-01-01.md"))  # Incorrect capitalization
+        self.assertIsNone(cleaner.get_date_from_filename("session-notes-2000-01-01.txt"))  # Incorrect extension
+        self.assertIsNone(cleaner.get_date_from_filename("notes-2022-10-20.md"))  # incomplete leading part
+        self.assertIsNone(cleaner.get_date_from_filename("session-2022-10-20.md"))  # incomplete leading part
+
+        # # Test with filenames that are close to the pattern but not exact
+        # assert cleaner.get_date_from_filename("session-notes-2022-10-20.markdown") is None
+        # assert cleaner.get_date_from_filename("session-notes-2022-13-01.md") is None  # Invalid month
+        # assert cleaner.get_date_from_filename("session-notes-2022-00-10.md") is None  # Invalid month
+        #
+        # # Test with edge cases
+        # assert cleaner.get_date_from_filename("") is None
+        # assert cleaner.get_date_from_filename(" ") is None
+
+    def test_cleanup_contents(self):
+        cleaner = SessionNotesCleaner()
+        text = self.sample_file_contents()
+        clean_text = cleaner.cleanup_contents(text, "2023-12-07")
+        verify(clean_text, preferred_multi_reporter)
 
     @staticmethod
     def strip_trailing_whitespace(multi_line_text):
@@ -131,9 +132,8 @@ def strip_trailing_whitespace(multi_line_text):
         # Replace matched patterns with nothing (i.e., remove them)
         return re.sub(pattern, '\n', multi_line_text)
 
-
-def sample_file_contents(self):
-    text = '''# Session Date: 2023-12-07
+    def sample_file_contents(self):
+        text = '''# Session Date: 2023-12-07
 
 ## Active Co-Authors   
 Co-Authored-By: Nathaniel Herman <nathaniel.herman@gmail.com>   
@@ -188,7 +188,7 @@ def sample_file_contents(self):
 - exciting, playful
 - curious, scared, fulfilled
 - rocky, relieved
-- resfreshing, collaborative
+- refreshing, collaborative
 
 What did you like so much you want to do more of it / do it again?
 - clojure
@@ -218,7 +218,7 @@ def sample_file_contents(self):
     - 3. consider a checklist for newcomers (was a discussion about this)
     - 4. consider items in the backlog (reminders, what are we working on, etc.
 '''
-    return self.strip_trailing_whitespace(text)
+        return self.strip_trailing_whitespace(text)
 
 
 def test_strip_trailing_whitespace(self):

From d4d22ff0b6bced96d4fd68d40abc8bd7e805f2eb Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Wed, 3 Jan 2024 11:37:16 -0500
Subject: [PATCH 44/51] - f Check for valid date in filename.  Enable more
 AI-generated tests.

---
 .../session_notes_cleaner.py                  | 16 +++++++++++-
 tests/test_session_notes_cleaner.py           | 25 ++++++++-----------
 2 files changed, 26 insertions(+), 15 deletions(-)

diff --git a/src/session_notes_cleanup/session_notes_cleaner.py b/src/session_notes_cleanup/session_notes_cleaner.py
index 818eb90..2fdcccf 100644
--- a/src/session_notes_cleanup/session_notes_cleaner.py
+++ b/src/session_notes_cleanup/session_notes_cleaner.py
@@ -2,10 +2,12 @@
 import re
 import shutil
 import sys
+from datetime import datetime
 
 inactive_co_author_header_pattern = r'^#+\s*Inactive\s(Co-Authors)?.*$'
 active_co_author_header_pattern = r'^#+\s*(Active Co-Authors|Co-Authors \(This Session\)).*$'
 
+
 # TODO
 # - Return codes similar to diff(1)
 
@@ -64,9 +66,21 @@ def add_coauthor_heading_before_co_authored_by_list(self, text):
                               flags=re.IGNORECASE | re.MULTILINE)
         return cleaned_text
 
+
     def get_date_from_filename(self, filename):
         match = re.search(r'^session-notes-(\d{4}-\d{2}-\d{2}).*[.]md$', filename)
-        return match.group(1) if match else None
+
+        if match:
+            date_str = match.group(1)
+            try:
+                # Attempt to parse the date string into a datetime object
+                valid_date = datetime.strptime(date_str, '%Y-%m-%d')
+                return date_str
+            except ValueError:
+                # The date string is not a valid date
+                return None
+
+        return None
 
     def slurp_file(self, filename):
         try:
diff --git a/tests/test_session_notes_cleaner.py b/tests/test_session_notes_cleaner.py
index 2e41e54..5466c23 100644
--- a/tests/test_session_notes_cleaner.py
+++ b/tests/test_session_notes_cleaner.py
@@ -104,20 +104,17 @@ def test_get_date_from_filename(self):
         self.assertEqual(cleaner.get_date_from_filename("session-notes-2021-01-01-part2.md"), "2021-01-01")
 
         # Test with filenames that do not follow the expected pattern
-        self.assertIsNone(cleaner.get_date_from_filename("session-notes.md"))  # no date
-        self.assertIsNone(cleaner.get_date_from_filename("Session-notes-2000-01-01.md"))  # Incorrect capitalization
-        self.assertIsNone(cleaner.get_date_from_filename("session-notes-2000-01-01.txt"))  # Incorrect extension
-        self.assertIsNone(cleaner.get_date_from_filename("notes-2022-10-20.md"))  # incomplete leading part
-        self.assertIsNone(cleaner.get_date_from_filename("session-2022-10-20.md"))  # incomplete leading part
-
-        # # Test with filenames that are close to the pattern but not exact
-        # assert cleaner.get_date_from_filename("session-notes-2022-10-20.markdown") is None
-        # assert cleaner.get_date_from_filename("session-notes-2022-13-01.md") is None  # Invalid month
-        # assert cleaner.get_date_from_filename("session-notes-2022-00-10.md") is None  # Invalid month
-        #
-        # # Test with edge cases
-        # assert cleaner.get_date_from_filename("") is None
-        # assert cleaner.get_date_from_filename(" ") is None
+        self.assertIsNone(cleaner.get_date_from_filename("session-notes.md"), "Missing date part")
+        self.assertIsNone(cleaner.get_date_from_filename("Session-notes-2000-01-01.md"), "Incorrect capitalization")
+        self.assertIsNone(cleaner.get_date_from_filename("session-notes-2000-01-01.txt"), "Invalid extension")
+
+        self.assertIsNone(cleaner.get_date_from_filename("notes-2022-10-20.md"), "Incorrect leading part")
+
+        self.assertIsNone(cleaner.get_date_from_filename("session-notes-2022-13-01.md"), "Invalid month")
+        self.assertIsNone(cleaner.get_date_from_filename("session-notes-2022-00-10.md"), "Invalid month")
+
+        self.assertIsNone(cleaner.get_date_from_filename(""), "Empty")
+        self.assertIsNone(cleaner.get_date_from_filename(" "), "Blank")
 
     def test_cleanup_contents(self):
         cleaner = SessionNotesCleaner()

From 991d2b0abe1d7e195850ba06aa35e49785b23a7c Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Wed, 3 Jan 2024 11:44:29 -0500
Subject: [PATCH 45/51] . d Create TODO for Reporter.  (And remove dead code
 comments)

---
 tests/test_session_notes_cleaner.py | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/tests/test_session_notes_cleaner.py b/tests/test_session_notes_cleaner.py
index 5466c23..b75371a 100644
--- a/tests/test_session_notes_cleaner.py
+++ b/tests/test_session_notes_cleaner.py
@@ -3,15 +3,16 @@
 import unittest
 
 from approvaltests import verify
-# from approvaltests.core import approval
 from approvaltests.reporters import GenericDiffReporterFactory, ClipboardReporter, MultiReporter
 
 from src.session_notes_cleanup.session_notes_cleaner import SessionNotesCleaner
 
+# Set up ApprovalTests reporter(s)
 default_reporter = GenericDiffReporterFactory().get_first_working()
+# TODO - Set reporter for whole file/class
+# from approvaltests.core import approval
 # approval.DEFAULT_REPORTER = default_reporter
 
-
 first_working_reporter = GenericDiffReporterFactory().get_first_working()
 clipboard_reporter = ClipboardReporter()
 # bc_reporter = GenericDiffReporterFactory().get("Beyond Compare")
@@ -90,11 +91,6 @@ def test_add_coauthor_heading_before_co_authored_by_list(self):
         acceptance_text = f'Before\n{text}====\nAfter\n{clean_text}====\n'
         verify(acceptance_text, preferred_multi_reporter)
 
-        # Import the function to be tested
-        # from your_script import get_date_from_filename
-
-        # Test suite for 'get_date_from_filename'
-
     def test_get_date_from_filename(self):
         cleaner = SessionNotesCleaner()
 

From f3722724bd4e40cdf4aa4c4074fbef12736ca071 Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Wed, 3 Jan 2024 11:56:08 -0500
Subject: [PATCH 46/51] . - Removed dead code (as suggested by "code problems")

---
 src/session_notes_cleanup/session_notes_cleaner.py | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/src/session_notes_cleanup/session_notes_cleaner.py b/src/session_notes_cleanup/session_notes_cleaner.py
index 2fdcccf..c1d1f42 100644
--- a/src/session_notes_cleanup/session_notes_cleaner.py
+++ b/src/session_notes_cleanup/session_notes_cleaner.py
@@ -66,15 +66,14 @@ def add_coauthor_heading_before_co_authored_by_list(self, text):
                               flags=re.IGNORECASE | re.MULTILINE)
         return cleaned_text
 
-
     def get_date_from_filename(self, filename):
         match = re.search(r'^session-notes-(\d{4}-\d{2}-\d{2}).*[.]md$', filename)
 
         if match:
             date_str = match.group(1)
             try:
-                # Attempt to parse the date string into a datetime object
-                valid_date = datetime.strptime(date_str, '%Y-%m-%d')
+                # Attempt to parse the date string
+                datetime.strptime(date_str, '%Y-%m-%d')
                 return date_str
             except ValueError:
                 # The date string is not a valid date

From 7dd8c2c5575c1df955630e014205b8c11f05435f Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Wed, 3 Jan 2024 12:01:22 -0500
Subject: [PATCH 47/51] . t Disabled (unworking) MultiReporter

---
 tests/test_session_notes_cleaner.py | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tests/test_session_notes_cleaner.py b/tests/test_session_notes_cleaner.py
index b75371a..3647e15 100644
--- a/tests/test_session_notes_cleaner.py
+++ b/tests/test_session_notes_cleaner.py
@@ -17,6 +17,7 @@
 clipboard_reporter = ClipboardReporter()
 # bc_reporter = GenericDiffReporterFactory().get("Beyond Compare")
 preferred_multi_reporter = MultiReporter(first_working_reporter, clipboard_reporter)
+preferred_multi_reporter = first_working_reporter
 
 
 class TestSessionNotesCleaner(unittest.TestCase):

From 87596f189a716ea247f7e2e500af3fe3fd803aea Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Wed, 3 Jan 2024 12:07:47 -0500
Subject: [PATCH 48/51] . r Add explicit 'else'

---
 src/session_notes_cleanup/session_notes_cleaner.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/session_notes_cleanup/session_notes_cleaner.py b/src/session_notes_cleanup/session_notes_cleaner.py
index c1d1f42..75be83e 100644
--- a/src/session_notes_cleanup/session_notes_cleaner.py
+++ b/src/session_notes_cleanup/session_notes_cleaner.py
@@ -78,8 +78,8 @@ def get_date_from_filename(self, filename):
             except ValueError:
                 # The date string is not a valid date
                 return None
-
-        return None
+            else:
+                return None
 
     def slurp_file(self, filename):
         try:

From 0b8629f71c203e29df46cc6b202ea802158dc265 Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Wed, 3 Jan 2024 12:10:44 -0500
Subject: [PATCH 49/51] . r Outdent incorrect 'else'

---
 src/session_notes_cleanup/session_notes_cleaner.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/session_notes_cleanup/session_notes_cleaner.py b/src/session_notes_cleanup/session_notes_cleaner.py
index 75be83e..b0af67e 100644
--- a/src/session_notes_cleanup/session_notes_cleaner.py
+++ b/src/session_notes_cleanup/session_notes_cleaner.py
@@ -78,8 +78,8 @@ def get_date_from_filename(self, filename):
             except ValueError:
                 # The date string is not a valid date
                 return None
-            else:
-                return None
+        else:
+            return None
 
     def slurp_file(self, filename):
         try:

From 8387b277ddef58118c3de7267287125737b54f74 Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Wed, 3 Jan 2024 12:12:50 -0500
Subject: [PATCH 50/51] . a Invert 'if' match

---
 src/session_notes_cleanup/session_notes_cleaner.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/session_notes_cleanup/session_notes_cleaner.py b/src/session_notes_cleanup/session_notes_cleaner.py
index b0af67e..18ab68c 100644
--- a/src/session_notes_cleanup/session_notes_cleaner.py
+++ b/src/session_notes_cleanup/session_notes_cleaner.py
@@ -69,7 +69,9 @@ def add_coauthor_heading_before_co_authored_by_list(self, text):
     def get_date_from_filename(self, filename):
         match = re.search(r'^session-notes-(\d{4}-\d{2}-\d{2}).*[.]md$', filename)
 
-        if match:
+        if not match:
+            return None
+        else:
             date_str = match.group(1)
             try:
                 # Attempt to parse the date string
@@ -78,8 +80,6 @@ def get_date_from_filename(self, filename):
             except ValueError:
                 # The date string is not a valid date
                 return None
-        else:
-            return None
 
     def slurp_file(self, filename):
         try:

From 386d39ea0ee0b57174c770e62ef92ba7472aa758 Mon Sep 17 00:00:00 2001
From: "Michael R. Wolf" <MichaelRWolf@att.net>
Date: Wed, 3 Jan 2024 12:16:16 -0500
Subject: [PATCH 51/51] . r Move assignment closer to usage

---
 src/session_notes_cleanup/session_notes_cleaner.py | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/src/session_notes_cleanup/session_notes_cleaner.py b/src/session_notes_cleanup/session_notes_cleaner.py
index 18ab68c..08b8e06 100644
--- a/src/session_notes_cleanup/session_notes_cleaner.py
+++ b/src/session_notes_cleanup/session_notes_cleaner.py
@@ -72,13 +72,11 @@ def get_date_from_filename(self, filename):
         if not match:
             return None
         else:
-            date_str = match.group(1)
             try:
-                # Attempt to parse the date string
+                date_str = match.group(1)
                 datetime.strptime(date_str, '%Y-%m-%d')
                 return date_str
             except ValueError:
-                # The date string is not a valid date
                 return None
 
     def slurp_file(self, filename):