Skip to content

Reconsider whether the qa note kind should exist as a fourth type #765

Description

@toejough

Trigger

Joe recalled: "I swear we deleted qa functionality, or had intended to. The only types I expect are facts, feedback, and runbooks." A prior pass this session confirmed qa (kind-3: qa-question/qa-answer) is fully live and shipped (internal/cli/qa.go, wired into targets.go, active spec openspec/specs/learn-qa-capture/spec.md, GLOSSARY entries, referenced in learn/recall/write-memory skill docs) and found no removal commit in git history. This issue re-examines that with a deeper pass.

The key finding: #727 already proposes exactly this — and has sat untouched for a month

#727 ("vault: collapse qa pair kinds into derivation metadata on fact/feedback — remove qa-question/qa-answer, migrate 10 pairs") is an OPEN, ready-for-agent-labeled issue, filed by Joe on 2026-08-23, with zero activity since (updatedAt == createdAt). It is a fully-specified plan to remove qa-question/qa-answer, internal/cli/qa.go, and isQueryExcludedKind, collapsing Q&A capture into optional question/certainty/contributors frontmatter fields on ordinary fact/feedback notes, migrating the (then-10) live pairs, and superseding ADR-0012. This is almost certainly the "we intended to remove it" memory — the intent was recorded in detail, just never executed.

What the deeper pass found

  1. Vault query for prior discussion of qa removal surfaced no separate design note beyond what's already reflected in vault: collapse qa pair kinds into derivation metadata on fact/feedback — remove qa-question/qa-answer, migrate 10 pairs #727's own provenance section (ADR-0012, the qanchor-park eval, note 982 which is about the runbook kind's value — not qa — and is a distinct, separate thread). No hint of removal intent predating vault: collapse qa pair kinds into derivation metadata on fact/feedback — remove qa-question/qa-answer, migrate 10 pairs #727.
  2. ADR-0012 ("D5′ asymmetric QA participation", accepted 2026-07-03) is qa's founding design record: answers compete in retrieval, questions are excluded (isQueryExcludedKind) pending a round-3 dedicated q-space channel, gated on further validation.
  3. ADR-0026 (runbook kind, 2026-08-24) explicitly says: "qa's asymmetric capture-and-exclude shape remains a special case for that kind alone, not a template other kinds should follow" — a design-outlier flag, not itself a removal call, but consistent with vault: collapse qa pair kinds into derivation metadata on fact/feedback — remove qa-question/qa-answer, migrate 10 pairs #727's framing that qa's shape is awkward.
  4. dev/eval/LEDGER.md: the round-3 premise check (Arm V, large-n) came back BORDERLINE at 63%, below the pre-registered 80% PASS bar — round-3 (the only reason qa-question notes exist at all) remains unlicensed. Round-2 itself gates on ≥20 real captured pairs.
  5. docs/ROADMAP.md: qa round-1 (capture) shown Shipped/Measured-borderline; round-2/3 still sit in the GATED band, unresolved.
  6. dev/eval/qa/: confirmed this directory holds the Q&A-memory validation scripts (Arm V large-n, P1 retrieval-pollution, P2 attribution-fidelity, P3 usage-distribution) — i.e. it IS about the qa note kind. It is not a coincidentally-named "quality assurance" harness.
  7. The "QA round-2 validation gate" in learn/SKILL.md (its vocab-liveness check) — confirmed this is the same qa (Q&A-memory) note kind's round-2 gate, not a different "quality assurance" checkpoint. The literal string "QA" in that skill step is short for the qa note kind, not a QA/testing milestone. This overlap in wording is a plausible contributor to the recollection, but the substantive finding is vault: collapse qa pair kinds into derivation metadata on fact/feedback — remove qa-question/qa-answer, migrate 10 pairs #727, not a naming coincidence.

Usage evidence (production vault today)

engram count --group-by type
feedback     526
fact         403
runbook       36
qa-answer     11
qa-question   11
total: 987

qa is the smallest kind by a wide margin (22/987 notes, ~2.2%). The round-2 gate needs ≥20 pairs; only 11 have accumulated in the ~2.5 months since round-1 shipped (2026-07-03) — well short, and round-3's licensing bar (Arm V ≥80%) already failed at 63%. Per #727: the qa-question half is write-only dead weight today (nothing reads it back; the only consumer would be the unlicensed round-3 channel), and recall's Step 4 double-writes a synthesis note and a qa pair restating the same conclusion.

The question for Joe

This is Joe's call — the evidence above (usage volume, the failed round-3 gate, ADR-0026's outlier framing, and Joe's own #727 proposal) leans toward "remove/merge," but three options are on the table and nothing here should be read as a final decision:

Given #727 already covers the "remove" option in complete implementable detail, the most useful next step may simply be deciding whether to execute #727 (possibly closing this issue as a duplicate once that's decided) rather than re-planning from scratch.

Related: #727 (the concrete removal/migration plan), #719 (runbook kind — independent), ADR-0012, ADR-0026, dev/eval/LEDGER.md#qa-arm-v-borderline.

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

    needs-triageMaintainer needs to evaluate this issue

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions