Skip to content

feat(providers): V36-C08-DATA inactive model/evidence facts projection - #2041

Merged
mergify[bot] merged 2 commits into
mainfrom
claude/ms0-v36-c08-data
Oct 30, 2026
Merged

mergify[bot] merged 2 commits into
mainfrom
claude/ms0-v36-c08-data

Conversation

@Cuarroc

@Cuarroc Cuarroc commented Oct 30, 2026 •

Copy link
Copy Markdown
Owner

Dieses Paket fügt nur eine ungenutzte, reine Datenfunktion hinzu: Sie trennt eingestellte Modell-Hinweise von echten, mit Quelle und Zeit belegten Beobachtungen. Unbekannte Werte für Aufwand und Kosten bleiben "unbekannt" und werden nie zu 0 oder "gratis"; nur ein ausdrücklich beobachtetes 0 bleibt 0. Es gibt keine Oberfläche, keinen Aufrufer, keine Modellwahl und keine Quoten- oder Schlüsseländerung, die Modellauswahl-Oberfläche (C08UI) bleibt hinter A1+R2 gesperrt.

Report

Package: V36-C08-DATA (parent V36-C08), Tier B, operator UMSETZEN, DRAFT. Base 82a79d25, head 0d373808. Parent M0-P2 (PR #2015, merge b1645626) is an ancestor of the base (checked, exit 0). Authority: Root/Stabs controller admission of the pure unused DATA leaf; no R2/Satz3/paid/key/routing grant.

What changed (RAW 178 lines vs base, cap 180: 121 src/lib/providers.ts + 57 src/lib/providers.test.ts, 0 deletions)

Additive only; no existing function, type, hook, export or test body was touched, src/types.ts untouched (read-only), no live caller added.

New exports in src/lib/providers.ts:

  • ModelFact<T> = {state:"known",value} | {state:"unknown"}
  • ModelFactsInput {providerId, harness, configured?{model?,effort?}, observed?{providerId,harness,sourceId,model,observedAt (unix s),effort?,cost?{amount,unit}} | null}
  • ModelFactsClock {nowSeconds, staleAfterSeconds} (caller-supplied; no Date.now, no built-in TTL)
  • ModelFacts {configuredHint{model|null,effort|null}, observed: {state:"unknown",reason:"missing"|"identity-mismatch"|"invalid"|"future"} | {state:"observed",freshness:"current"|"stale",sourceId,model,observedAt,effort:ModelFact<string>,cost:ModelFact<{amount,unit}>}}
  • projectModelFacts(input, clock): ModelFacts: pure; reads own data properties only (no getters, no spread, no logging, inherited members ignored). Represents evidence, does not authenticate the caller.

Literal oracle table (fixed in the tests, not computed by production code):

Case Result
configured model-configured/high, no observation hint kept, observed unknown/missing
observed model-observed, source session-1, t=900, now=1000, window 300, effort/cost null observed/current, source+time kept, effort and cost unknown
observed with effort:"low", cost {0,"usd"} effort known low, cost known {0,"usd"} (explicit 0 preserved)
other providerId / other harness unknown/identity-mismatch
t=1001 (> now) unknown/future
t=0, NaN, blank sourceId, empty model, NaN clock unknown/invalid
t=700 / t=699 (window 300) current / stale (model still reported, non-current)
cost amount -1, missing unit, string amount, missing amount cost unknown
getters on effort/cost/configured, unrelated field secret getters never run (0 reads), field not in output

Evidence (all foreground under the assigned guard and warm slot, CARGO_BUILD_JOBS=1)

  • Stub checkpoint 7edad0ff (same public types, stub projection): npm run typecheck exit 0; npm run test:unit -- src/lib/providers.test.ts -t "keeps configured model hints distinct from observed evidence and unknown cost" exit 1, 1 failed / 23 skipped, AssertionError on configuredHint (assertion red, count 1, not a missing-import red). Committed through the normal hooks.
  • Head 0d373808: same selector exit 0 (1 passed / 23 skipped); whole src/lib/providers.test.ts exit 0 (24 passed); npm run typecheck exit 0.
  • Neighbours importing providers (ShellAccessibility, UsageView, UsageView.claims, ErsteinrichtungScreen tests): exit 0, 25 passed.
  • bash scripts/ci/red-first.sh (canonical, unchanged, own internal targets): exit 0, all 3 Test-First entries red/missing at base and green at head.
  • bash scripts/ci/gates.sh lane prepush in this worktree: exit 0 (313 s; typecheck, lint, fe-test, hq-test, denkraum, clippy, rust-suite green).
  • Normal commit hooks (secret scan, red-first, commit-msg) and push hook enabled, no --no-verify; git push -u exit 0, git ls-remote shows 0d373808bde02bcc69498effbb15a82a3e570434.
  • Raw diff is additive: git diff --numstat 82a79d25 gives 57/0 and 121/0.

Test names: the second case was named without a comma so the Test-First trailer is not read as a list. No old assertion was changed.

Architecture drift

No finding; no seam file touched, no allowlist change.

NICHT ABGEDECKT

  • Windows lane (#[cfg(windows)] tests, ConPTY/DPAPI, Windows clippy arms): not covered on Linux; it runs in the merge queue.
  • Prepush is the fast loop: browser smoke, frontend build and workflow gates run only in the linux lane.
  • No live model, usage, cost, R2 or selection proof; no visual claim (data-only, no screenshot, no UI critic).
  • No caller consumes the projection yet; real observation sources, their authenticity and any TTL choice belong to C08UI/R2.
  • The model Co-Authored-By is Claude Sonnet 5.5 (native header); effort was not observed.
  • External service state is checked by no gate.

Review

Review: ausstehend (Stufe B, zwei verschiedene Nicht-Autor-Familien, vom Orchestrator/Root eingereiht). No author review launched, no Ready/queue/merge. Stabs updates PLAN after merge; C08UI stays open and gated.

🤖 Generated with Claude Code

Root review record (2026-10-30 00:25Z, head 0d37380)

Source Family Verdict
Codex gpt-6.1-sol/high (server review feeder job srv-review-pr2041-codex-0104) OpenAI APPROVE WITH CONDITIONS
Kimi Code CLI (Root, PC) Moonshot APPROVE WITH CONDITIONS (no high/medium)
ID Sev Finding Disposition
R2041-P1 (Codex) med PLAN row stale (docs/PLAN.md:406) waived: Stabschef PFLEGEN after merge (standing practice)
R2041-A1 (Kimi) low nonBlank keeps untrimmed value; asymmetric trim in identity compare (providers.ts:506-510) follow-up for C08 UI wiring (no caller today)
R2041-A2 (Kimi) low docstring "no clock is read" wording (providers.ts:500-501) follow-up
R2041-B1 (Kimi) low as never cast in test 2 accepted as intentional runtime-validation test

Tier B complete with two non-author families (author Anthropic) → ready + review-ok bound to 0d37380.

Cuarroc and others added 2 commits October 30, 2026 00:49
…ection

Red checkpoint: the public types and a minimal projectModelFacts stub compile,
the new cases fail on assertions (count 1 for the first case).

Test-First: src/lib/providers.test.ts::keeps configured model hints distinct from observed evidence and unknown cost
Test-First: src/lib/providers.test.ts::leaves wrong-identity or future or malformed observations unknown and stale ones non-current
Test-First: src/lib/providers.test.ts::never runs getters or copies unrelated fields of untrusted evidence

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…vidence

Adds the unused pure projectModelFacts projection: configured hints stay
separate from source-stamped observations, mismatched identity, future and
malformed evidence stay unknown, stale evidence is labelled non-current, and
unknown effort/cost never become 0. No caller, IPC or selection is added.

Test-First: src/lib/providers.test.ts::keeps configured model hints distinct from observed evidence and unknown cost
Test-First: src/lib/providers.test.ts::leaves wrong-identity or future or malformed observations unknown and stale ones non-current
Test-First: src/lib/providers.test.ts::never runs getters or copies unrelated fields of untrusted evidence

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@Cuarroc
Cuarroc marked this pull request as ready for review October 30, 2026 00:16
@Cuarroc Cuarroc added the review-ok Pipeline: review disposition complete, no open high finding label Oct 30, 2026
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-30T00:18:49.777014Z — Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@mergify mergify Bot added the queued label Oct 30, 2026
@mergify
mergify Bot merged commit 227e10d into main Oct 30, 2026
25 checks passed
@mergify
mergify Bot deleted the claude/ms0-v36-c08-data branch October 30, 2026 00:33
@mergify

mergify Bot commented Oct 30, 2026

Copy link
Copy Markdown
Contributor

✅ Merged into main as 227e10d at 00:33 UTC

9 min in the queue, 8 min of it CI.

So far

Merge conditions: 9 of 9 met

This pull request

Condition Required by
✅ github-review-approved GitHub repository ruleset rule main-pr-required-checks
✅ label != do-not-merge —

The batch, tested on draft #2042

Condition Required by
✅ check-success = gates (linux) —
✅ check-success = gates (windows) —
✅ check-success = red-first —
✅ any of: check-success = @github-actions/gates (linux), check-neutral = @github-actions/gates (linux), check-skipped = @github-actions/gates (linux) GitHub repository ruleset rule main-pr-required-checks
✅ any of: check-success = @github-actions/gates (windows), check-neutral = @github-actions/gates (windows), check-skipped = @github-actions/gates (windows) GitHub repository ruleset rule main-pr-required-checks
✅ any of: check-success = @github-actions/red-first, check-neutral = @github-actions/red-first, check-skipped = @github-actions/red-first GitHub repository ruleset rule main-pr-required-checks
✅ any of: check-neutral = @mergify/Mergify Merge Protections, check-skipped = @mergify/Mergify Merge Protections, check-success = @mergify/Mergify Merge Protections GitHub repository ruleset rule main-pr-required-checks

Times in UTC · dashboard · how the merge queue works

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

Labels

review-ok Pipeline: review disposition complete, no open high finding

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant