# TODO List for esm-logging

This is a poor-man's issue tracker. I am not primarily a GitHub user so don't
want to commit to their issue tracking feature, but my primary SVC service
provider (Bitbucket) only offers paid integration into their issue tracker
(Jira). I don't have the time (and patience) at the moment to analyze the best
approach, so this file will have to suffice.

It's a very simple concept: Track any issues (features, bugfixes, hotfixes) in
here, assign a sequential number to it and use that number when branching.

I will try to develop a format so that I can parse the file later on, should I
decide to migrate to a real issue tracker. It's probably going to be Bugzilla,
but for that my html-theme-ref project needs to stabilize first.

## Format Specification

The file uses Markdown conventions for formatting headers and other text block
entitities, but SHOULD NOT be considered a Markdown file. That's why it has no
definitive file extension.

Each issue entry follows a structured format for easier parsing and future
migration.  Issues MUST be **appended** to this file and never moved, to
preserve Git diffing.

### Issue Format

```

ID: [ISSUE-NUMBER]
Type: [feature/bugfix/hotfix]
Title: [Short title]
Status: [open/in-progress/done/hold/cancelled]
Priority: [low/medium/high]
Created: [YYYY-MM-DD]
Description: [Detailed explanation]

---
```

- ISSUE-NUMBERs must be sequential
- truncation of description must be indentended so that every line starts at the
  same column
- issues must be started with two LF
- issues must be terminated with two LF, then `---`
- issues may have a free-text field (epilog), which must be started with two LF.

## Issues

ID: 1
Type: feature
Title: implement KMP algorithm for string searching
Status: hold
Priority: high
Created: 2025-05-03
Description: Implement the Knuth-Morris-Pratt algorithm for string searching.
             I require this for matching RFC 9112 boundaries of entities against
             a circular buffer.

---

ID: 2
Type: feature
Title: implement circular buffer
Status: done
Priority: high
Created: 2025-05-04
Description: implement a simple circular buffer

---

ID: 3
Type: bugfix
Title: move unit tests to subdirectory
Status: done
Priority: high
Created: 2025-05-04
Description: move the unit test suites to a unit/ subdirectory so that
             integration tests and benchmarks can be cleanly separated

---

ID: 4
Type: feature
Title: implement Rabin-Karp rolling hash algorithm
Status: done
Priority: high
Created: 2025-05-05
Description: After testing a couple of string search algorithms, I've ditched
             the idea of using KMP as my use-case gives no advantage compared to
             naive searching. In addition I've came upon the challenge that many
             string search algorithms are optimized for search on a linear
             buffer, which in my case is not applicable as the implementation
             the search algorithm is for uses a circular buffer. Rabin-Karp
             seemed promising. I've come up with a different approach though,
             which is still based on rolling hashes, therefore, as a base, I
             need an implementation of the original Rabin-Karp rolling hash
             algorithm

---

ID: 5
Type: feature
Title: implement chunked rolling hash algorithm
Status: in-progress
Priority: high
Created: 2025-05-05
Description: Implement my custom algorithm for doing rolling hash string search
             against a fixed length ring buffer

---

ID: 6
Type: feature
Title: implement importlib.resources handler for urllib
Status: done
Priority: high
Created: 2025-06-20
Description: A handler that can be registered with an urllib.request
             OpenerDirector to open importlib.resources package files.

---

ID: 7
Type: feature
Title: setup advanced testing environment
Status: done
Priority: high
Created: 2025-06-20
Description: copy the testing environment setup from
             byteb4rb1e.sphinxcontrib.ext

---

ID: 8
Type: bugfix
Title: rename package
Status: done
Priority: high
Created: 2025-06-20
Description: use dot namespaces to make the package a little more elegant

---

ID: 9
Type: bugfix
Title: fix LICENSE reference
Status: done
Priority: high
Created: 2025-06-20
Description: license specification is no longer a trove classifier in
             pyproject.toml, hence the reference to LICENSE must be changed

---

ID: 10
Type: feature
Title: pytest current test context fixtures
Status: done
Priority: high
Created: 2025-06-20
Description: add fixtures for doing things in relation to the active testing
             context

---

ID: 11
Type: bugfix
Title: move testing utils out of utils
Status: done
Priority: high
Created: 2025-06-20
Description: to shorten the namespace and also indicate that testing utilities
             are different from regular utilities

---

ID: 12
Type: feature
Title: simplify testing.fixtures.mock_pkg
Status: done
Priority: high
Created: 2025-06-21
Description: Only bootstrap a package mock with the minimum requirements for a
             Python module and let the consumer handle the directory layout.

---

ID: 13
Type: bugfix
Title: fix unit tests for urllib PkgHandler
Status: done
Priority: high
Created: 2025-06-21
Description: change of issue 12 wasn't properly reflected in urllib PkgHandler
             unit tests

---

ID: 14
Type: feature
Title: add compression support for urllib PkgHandler
Status: done
Priority: high
Created: 2025-06-21
Description: with a proper content-type of the PkgHandler addinfourl object, a
             consumer can determine whether the file is compressed or not.

---

ID: 15
Type: bugfix
Title: modularize module containers
Status: open
Priority: high
Created: 2025-06-28
Description: Even though importlib can find submodules through traversing paths
             instead of relying on __init__.py for every ancestor module, this
             is not supported by some modules like sphinx.ext.autosummary

---

ID: 16
Type: feature
Title: SQL-aware dataclass
Status: in-progress
Priority: low
Created: 2025-12-31
Description: A dataclass that transparently maps onto an SQL datastore, with
             command generation for syncing data between data class and store

---

ID: 17
Type: feature
Title: recursive-descent HTML (DOM) parser
Status: in-progress
Priority: high
Created: 2025-12-31
Description: Extend the built-in event-driven parser to be modeled after DOM
             recursive-descent HTML parser

---
