Move outstanding work from TODO.md into the issue tracker #28

Merged
andrew merged 3 commits from todo-to-issues into main 2026-08-02 19:47:21 -04:00
Collaborator

TODO.md was "outstanding items only" by its own opening line, so nearly all of it
moved. 26 issues, labelled by kind and blast radius, milestoned by what they can
land in, all carrying status::grooming:

Milestone Issues What it holds
0.2.x 4 Tests, docs, no ABI change
0.3.0 15 New public symbols — the wrappers
1.0.0 7 Sockets, threads, signals, math

The four items blocked on libakerror (#2–#5) are filed in both repositories
the fix is upstream and the bill is here — and TODO.md keeps a table saying which
is which. The largest of them, the unlocked error pool, is what makes this library
single-threaded and what blocks the threading and socket wrappers.

What stays in TODO.md

The part a tracker has no place for:

  • Where the library stands — 154 functions, 99.5% line coverage, 72.3% mutation
    score gated at 65.
  • The six deliberate omissions and the argument for each, so nobody adds
    sprintf thinking it was forgotten.
  • Which eight uncovered lines are uncoverable rather than untested — two need a
    fopencookie stream, two need an allocation within a factor of two of SIZE_MAX
    ("not a test, it is a hang"), four are macro artifacts.
  • The akbasic call counts — 10 calls into this library against 116 to raw libc
    — which is the evidence that prioritised everything built since, and the reason
    re-counting against this release is worth doing (#26).

377 lines to 189.

Also filed, not fixed here

25 file headers in tests/ and src/ cite TODO.md section numbers from a
numbering the file had already abandoned before this change (§1.9, §2.2.16,
§3.6). They label completed work, so nothing about the code is misleading — only
the pointer is. That is #27, left for its own commit rather than churning 25
untouched files in a documentation diff.


Filed by Tachikoma (Claude Code, Opus 5, 1M context)

`TODO.md` was "outstanding items only" by its own opening line, so nearly all of it moved. **26 issues**, labelled by kind and blast radius, milestoned by what they can land in, all carrying `status::grooming`: | Milestone | Issues | What it holds | |---|---:|---| | 0.2.x | 4 | Tests, docs, no ABI change | | 0.3.0 | 15 | New public symbols — the wrappers | | 1.0.0 | 7 | Sockets, threads, signals, math | **The four items blocked on libakerror (#2–#5) are filed in both repositories** — the fix is upstream and the bill is here — and `TODO.md` keeps a table saying which is which. The largest of them, the unlocked error pool, is what makes this library single-threaded and what blocks the threading and socket wrappers. ## What stays in TODO.md The part a tracker has no place for: - **Where the library stands** — 154 functions, 99.5% line coverage, 72.3% mutation score gated at 65. - **The six deliberate omissions** and the argument for each, so nobody adds `sprintf` thinking it was forgotten. - **Which eight uncovered lines are uncoverable rather than untested** — two need a `fopencookie` stream, two need an allocation within a factor of two of `SIZE_MAX` ("not a test, it is a hang"), four are macro artifacts. - **The akbasic call counts** — 10 calls into this library against 116 to raw libc — which is the evidence that prioritised everything built since, and the reason re-counting against this release is worth doing (#26). 377 lines to 189. ## Also filed, not fixed here 25 file headers in `tests/` and `src/` cite `TODO.md` section numbers from a numbering the file had **already abandoned before this change** (§1.9, §2.2.16, §3.6). They label completed work, so nothing about the code is misleading — only the pointer is. That is #27, left for its own commit rather than churning 25 untouched files in a documentation diff. --- Filed by Tachikoma (Claude Code, Opus 5, 1M context)
tachikoma added 1 commit 2026-08-02 18:55:57 -04:00
Move outstanding work from TODO.md into the issue tracker
Some checks failed
libakstdlib CI Build / cmake_build (push) Has been cancelled
libakstdlib CI Build / sanitizers (push) Has been cancelled
libakstdlib CI Build / coverage (push) Has been cancelled
libakstdlib CI Build / mutation_test (push) Has been cancelled
dbe1ccaf57
Twenty-six issues on source.starfort.tech/andrew/libakstdlib, labelled by kind
and blast radius and milestoned by what they can land in: 0.2.x for anything
that breaks no ABI, 0.3.0 for new public symbols, 1.0.0 for the large surfaces.
Everything filed carries status::grooming.

The four items blocked on libakerror are filed in both places -- the fix is
there and the bill is here -- and TODO.md keeps a table saying which is which.

What stays in TODO.md is what a tracker has no place for: where the library
stands, why six libc functions are deliberately not wrapped, which eight
uncovered lines are uncoverable rather than untested, and the akbasic call
counts that prioritised everything built since. 377 lines to 189.

Filed alongside: 25 file headers in tests/ and src/ cite TODO.md section
numbers from a numbering the file itself had already abandoned. They label
completed work, so nothing about the code is misleading -- only the pointer is.
Left for its own commit rather than churning 25 files here.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
tachikoma added 1 commit 2026-08-02 18:57:45 -04:00
Correct the error-pool entry: the pin is 1.0.0, upstream locks it
Some checks failed
libakstdlib CI Build / sanitizers (push) Has been cancelled
libakstdlib CI Build / coverage (push) Has been cancelled
libakstdlib CI Build / mutation_test (push) Has been cancelled
libakstdlib CI Build / cmake_build (push) Has been cancelled
91a8896b18
The largest item in the file said the error pool has no synchronisation of any
kind and that libakstdlib is therefore permanently single-threaded pending a
decision upstream. That is true of deps/libakerror as pinned -- 1.0.0, zero
occurrences of akerr_mutex_lock, no lock.h, no thread tests -- and false of
libakerror 2.0.1, which holds one recursive lock over the pool and the status
registry and ships docs/thread-safety.md.

libakgl and akbasic both pin 2.0.1 already.

Issue #2 is retitled and rescoped to the submodule bump and the concurrent test
that has to prove it, rather than a wait on somebody else.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
tachikoma added 1 commit 2026-08-02 19:24:51 -04:00
Point AGENTS.md at the issue tracker for outstanding work
All checks were successful
libakstdlib CI Build / cmake_build (push) Successful in 2m54s
libakstdlib CI Build / sanitizers (push) Successful in 2m50s
libakstdlib CI Build / coverage (push) Successful in 2m44s
libakstdlib CI Build / mutation_test (push) Successful in 12m41s
51144038ce
The agent instructions now say where new work goes -- an issue on the forge,
labelled by kind and blast radius and carrying status::grooming until its scope
is settled -- and that TODO.md is the record of where the library stands, what
is deliberately not wrapped, and which uncovered lines are uncoverable rather
than untested.

Also: a defect in a dependency is filed against that dependency. Three defects
in libakerror that cost this library a workaround each sat in this repository's
own notes without anybody upstream being able to see them, which is how a
workaround gets written once per consumer.

The KNOWN_FAILING_TESTS and pull-request rules now name the issue rather than a
TODO entry.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
andrew merged commit 761006a860 into main 2026-08-02 19:47:21 -04:00
Sign in to join this conversation.