Skip to content

Sprint tracking: triaged backlog — valid + rescope (board mirror) #413

Description

@Yaraslaut

The board is authoritative. If this issue and the board disagree, the board is
right.
This is a mirror, not a queue — it exists because reading a project
board needs a token with project scope, and a CI job or a repo-scope session
does not have one.


Snapshot — 2026-09-02

First snapshot.

Phase Items
1 — A worktree builds and the finished fixes are on master 3
2 — No shipped surface lies about what it accepts 4
3 — Ledger enforces the boundaries it documents 1
4 — Every comment names something that exists 2
5 — Coverage measures the whole tree and a regression fails the build 4
6 — The library and the ladder meet the coverage bar they claim 5
Deferred 3
Backlog 5
Total 27

Progress: 0 / 19 sequenced done. #386 and #383 are In Review.

The sequenced queue, in Order

# Issue Lane Phase
1 #372 build: a worktree under .claude/worktrees/ breaks every AUTOMOC target T tests 1
2 #386 forms: enum class renders as free text — PR #395 L forms 1
3 #383 mutator never flips != back to ==PR #394 T tests 1
4 #403 coverage.sh profiles 3 of 9 test binaries; include/morph/net scored by nothing T tests 5
5 #402 every codecov status is informational; two components below target are green T tests 5
6 #404 120 partial lines are branches nothing takes both ways T tests 5
7 #405 the framework's C++ has never been measured against a mutant T tests 5
8 #388 DynamicForm mistypes array-valued keys assigned as QVariant L forms 2
9 #387 spurious onOptionsReceived warning on every controller without a Choice L forms 2
10 #368 an unattached BoardModel replies stoull; two guards never fire N ladder 2
11 #362 RunReportJob and UndoTransaction cannot be driven by any client N ladder 2
12 #382 any authenticated principal can read and write any book N ladder 3
13 #355 four header comments cite tryFireImpl/SubscriberEntry, neither exists D framework 4
14 #340 ten comments cite findings by bare id the lint cannot see D framework 4
15 #406 148 throw sites, 81 catch arms, nothing measures how many are driven D framework 6
16 #409 include/morph/offline at 85.20%; one header reads 57.04% D framework 6
17 #410 include/morph/forms at 94.37%; forms.hpp holds 36 of 41 misses L forms 6
18 #411 examples/common fell to 90.39% from the 95.85% its target came from N ladder 6
19 #412 crm: two models' journaling paths executed by no test N ladder 6

Deferred — sequenced, held behind something unscheduled

Issue Held on
#391 bookmarks fetch-timer segfault No reproduction. One CI hit on a loaded runner; 40/40 green locally, ASan+UBSan clean on the same run.
#373 ledger cross-book category link Repo-owner decision: refuse it, or keep ignoring it downstream. The corpus currently documents it as accepted.
#341 r5-003 disposition Repo-owner decision. examples/FINDINGS.md says the owner decides and the ladder never self-triages.

Backlog — real work, not yet sequenced

#226 (replay-family decision), #204 and #198 (surveys whose gaps are already
split out or parked), #407 (SQLite-shaped testing charter), #408 (mutation gate
in CI).


Open questions

Stated honestly, because these are what the sprint does not yet know.

  1. Every coverage figure in phase 6 is provisional until coverage: scripts/coverage.sh profiles three test binaries out of nine, so include/morph/net is scored by nothing at all #403 lands.
    include/morph/net — 955 lines across two headers plus detail/, holding 42
    of the library's 148 throw sites — contributes zero files to the report.
    sqlite_offline_queue.hpp's 57.04% and include/morph/qt's 13 reported lines
    are measured with their own test binaries unprofiled. The library's headline
    95.69% is therefore computed over a tree that silently excludes its network
    stack. The targets in phase 6 will move, possibly a lot, and in both
    directions.

  2. The 99% goal has not been costed against the real denominator. From
    95.69% it means closing ~190 of 246 unhit lines — but that arithmetic is over
    the wrong tree (see 1). It is also not obviously reachable everywhere:
    codecov.yml documents an llvm-cov artifact class (a "control reached past
    this block" counter on certain closing braces, with no LCOV_EXCL_LINE
    equivalent) that puts several components' honest ceiling below 100%.

  3. No mutation tool is known to work here. mull, dextool and friends are
    absent, and their LLVM support has historically lagged; CI pins clang 20 and
    this workstation runs clang 22. mutation: the framework's own C++ has never been measured against a single mutant, so an inverted if in include/morph fails no known test #405's first deliverable is settling whether
    any tool builds against this tree. That is the most likely way the
    mutation workstream dies
    , and it is named in the ticket rather than
    discovered later.

  4. A literal 100% mutation score is not a coherent target. Equivalent
    mutants are undecidable in general, so the honest goal is 100% of
    non-equivalent mutants with an allowlist carrying a reason per entry — the
    shape scripts/scenario/coverage_allowlist.json already uses.

  5. Whether the ladder's coverage gates should start blocking is a decision, not
    an oversight.
    codecov.yml records the policy — finish the ladder, then
    raise the gates together — and examples/rungs.txt now lists seven rungs.
    coverage: every codecov status is informational, so a component sitting below its own target still produces a green build #402 asks for that to be resolved one way or the other, because
    examples/IMPLEMENTATION.md's rung-exit criterion 5 already calls the gate
    "blocking" and no component is.

  6. Three Deferred items need a decision from the repo owner, not evidence.
    Each is named above with its exact question. They are not blocked on work.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions