Skip to content

ACTION REQUIRED (8 nights old) — nightly 2026-08-24: a low-confidence finding was promoted as unqualified fact - #21

Open
jaydubya818 wants to merge 1 commit into
mainfrom
nightly/2026-08-24-improvements
Open

ACTION REQUIRED (8 nights old) — nightly 2026-08-24: a low-confidence finding was promoted as unqualified fact#21
jaydubya818 wants to merge 1 commit into
mainfrom
nightly/2026-08-24-improvements

Conversation

@jaydubya818

Copy link
Copy Markdown
Owner

Recommended merge order: 4 of 9 — but flagged regardless of content: this is the oldest branch on the repo.

Age: 8 nights (2026-08-24) — the longest-lived unmerged branch here, and it is 80 commits behind main. Commits: 1. Files: lib/agent-runtime/promotion.mjs, tests/agents/promotion-provenance.test.mjs.

Why it needs a decision now

Not because the fix is urgent — because an 8-night-old branch is a process failure. It has survived seven nightly runs without being merged or closed. Either merge it or close it; leaving it is the outcome that keeps costing.

Content

The promotion path emitted a low-confidence finding into canonical wiki content without its qualifier, so a tentative result read as established fact downstream. That is a knowledge-integrity bug in a knowledge base: the damage is silent and compounds, because later readers cannot tell the claim was ever hedged.

Verification

Rebased onto current main: 605 pass / 0 fail, despite being 80 commits behind — it rebases without conflict and its regression test still holds.

Risk if this is wrong

Promotion output becomes more conservative — a finding that previously promoted cleanly may now carry a qualifier or be held back. Failure direction is under-promotion, which is recoverable; the current behaviour's failure direction is not.


Standing facts, measured on this run (2026-09-01)

All eight pre-existing nightly branches were re-measured against main at commit f42213ee:

  • Merges cleanly: yes — git merge-tree --write-tree main <branch> reports zero conflicts for all eight. (The brief described all eight as diverged; that is a GitHub compare status meaning "both refs have unique commits", not a conflict prediction.)
  • Not superseded: git log --cherry-pick --right-only main...<branch> returns a non-empty commit list for every one of the eight, so no branch is closable without merging on supersession grounds.
  • Tests rebased: each branch was rebased onto current main and the full root suite run. All green (counts per-PR below). Root suite only — web/ has no test suite, so branches touching web/ are unverified on their actual subject matter.

Opened by the nightly maintenance run. Not auto-merged and not self-approved.

promoteDiscovery read `confidence`, `related_sources` and `evidence_count`
off the bus item to build the scorer candidate, then dropped all three when
serializing the promoted page. The V2 provenance block recorded how the
promotion was decided (promotion_score, promotion_decision,
contradiction_status, explicit_approval) but not what it was decided *about*.

Reproduced by promoting two candidates from opposite ends of the evidence
scale through the same gate: `confidence: high` with evidence_count 9 and
three cited sources, and `confidence: low` with evidence_count 1 and none.
Both cleared as `learned` (0.702 and 0.566) and produced promoted frontmatter
identical on every qualifier — nothing on the page distinguished them. So an
uncertain observation read as unqualified fact to any consumer loading the
promoted page, and the evidence links that justified it were reachable only
by following `source_path` back to the bus item and re-reading it. This is
the failure mode docs/LOSSY-BOUNDARIES.md section 5 catalogues: recoverable
in one hop, but invisible at the point of use.

Now carried onto the page. Defaults match the ones scorePromotion applies to
the candidate (medium / [] / 0), so the page records what was actually
scored rather than a second interpretation of the same input, and an
unscored promotion states the same fields instead of omitting them. Field
names and the `|| []` shape match publishBusItem, which is where these
values originate.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant