Repository navigation
Conversation
…riers (AP-ISS-0201)
|
🔍 OpenCodeReview found 6 issue(s) in this PR.
📄
|
CI Coverage Report
Coverage artifact was not available for this run. |
|
AP-ISS-0201 review disposition for the non-inline embedding HIGH: current |
|
KitGoalKeeper dependency reconciliation (2026-10-20 14:32 ICT, read-only GitHub + KitControl check): The integration-sequencing claim in this PR body is stale. AgentProxy PR #123 ( |
KitDev33 Gen19 — post-AP-ISS-0149 integration checkpoint (2026-10-21 ICT)
NEXT: finish exact-head CI and review; if all required gates pass, merge via expected-head SHA and verify accepted-main provenance; persist canonical KitControl handoff/close using supported privileged lifecycle only. If gates cannot be repaired within issue scope or lifecycle writes remain denied, keep ownership/WIP and escalate via official KitControl support. DO NOT force-update refs, bypass failed checks, or hand-edit protected runtime. |
| net.isIP(candidate) !== 0 && | ||
| candidate.replace(/^::ffff:/, "").toLowerCase() === peer.toLowerCase() |
There was a problem hiding this comment.
IPv6 peers are compared as raw strings after only stripping ::ffff:. Equivalent IPv6 spellings (for example fd00::1 versus fd00:0:0:0:0:0:0:1) will not match, so a configured trusted proxy can be classified as remote; forwarding headers are then stripped and the proxy address is recorded as the client. Normalize both addresses via parsed IP/binary representation before comparison, or require canonical configuration and validate it explicitly.
Suggestion:
| net.isIP(candidate) !== 0 && | |
| candidate.replace(/^::ffff:/, "").toLowerCase() === peer.toLowerCase() | |
| net.isIP(candidate) !== 0 && | |
| normalizeIp(candidate) === normalizeIp(peer) |
| const latestCompleteRefresh = readLastCompleteRefreshAt(); | ||
| if (latestCompleteRefresh !== null) { | ||
| const age = Date.now() - latestCompleteRefresh; | ||
| if (age >= 0 && age < SYNC_INTERVAL_MS) { | ||
| return { |
There was a problem hiding this comment.
lastCompleteRefreshAt survives clearSyncedIntelligence(). After a manual DELETE/clear, this guard can return success within SYNC_INTERVAL_MS while the Arena rows are empty, preventing repopulation until the interval expires. Clear or invalidate this marker when clearing the dataset, or require stored rows before taking this fast path.
Suggestion:
| const latestCompleteRefresh = readLastCompleteRefreshAt(); | |
| if (latestCompleteRefresh !== null) { | |
| const age = Date.now() - latestCompleteRefresh; | |
| if (age >= 0 && age < SYNC_INTERVAL_MS) { | |
| return { | |
| const latestCompleteRefresh = readLastCompleteRefreshAt(); | |
| if (latestCompleteRefresh !== null && hasArenaEloEntries()) { | |
| const age = Date.now() - latestCompleteRefresh; | |
| if (age >= 0 && age < SYNC_INTERVAL_MS) { | |
| return { |
| applyArenaEloRefresh(entries); | ||
| writeLastCompleteRefreshAt(Date.now()); | ||
| clearLastFailedAt(); |
There was a problem hiding this comment.
applyArenaEloRefresh commits before this KV write. If writeLastCompleteRefreshAt fails (disk/DB error), the catch reports the sync as failed even though the dataset was replaced; the freshness marker remains stale, so every retry re-fetches/re-applies the same data and can repeatedly report failure. Make the marker update part of the same transaction, or treat marker persistence as best-effort after a successful apply.
Suggestion:
| applyArenaEloRefresh(entries); | |
| writeLastCompleteRefreshAt(Date.now()); | |
| clearLastFailedAt(); | |
| applyArenaEloRefresh(entries); | |
| try { | |
| writeLastCompleteRefreshAt(Date.now()); | |
| } catch (err) { | |
| console.warn(`[ARENA_ELO_SYNC] Failed to persist refresh timestamp: ${getErrorMessage(err)}`); | |
| } | |
| clearLastFailedAt(); |
| if (targetFormat === "claude") dropIncompatibleCarrier(body, "reasoning"); | ||
| if (targetFormat === "openai-responses") dropIncompatibleCarrier(body, "output_config"); |
There was a problem hiding this comment.
targetEffort === "none" exits through clearReasoning before these carrier guards. For targetFormat === "openai-responses", an existing output_config therefore survives, even though this format treats reasoning as the carrier and output_config as incompatible. A force-disable rule can still send the stale carrier and be rejected/misinterpreted. Remove the incompatible carrier in the none path too.
Suggestion:
| if (targetFormat === "claude") dropIncompatibleCarrier(body, "reasoning"); | |
| if (targetFormat === "openai-responses") dropIncompatibleCarrier(body, "output_config"); | |
| if (targetFormat === "claude") dropIncompatibleCarrier(body, "reasoning"); | |
| if (targetFormat === "openai-responses") dropIncompatibleCarrier(body, "output_config"); |
AP-ISS-0201 — general library-runtime OCR findings
Closes the 15 findings authorized by the live AP-ISS-0201 claim (1 HIGH + 14 MEDIUM) with bounded RED→GREEN fixes/dispositions against current code. This supersedes older routing/count assumptions.
Exact candidate
5d6fe9bf935d20d35ac845869df2be6484444e80kit/ap-iss-0201-library-ocrorigin/mainobserved before publish:166b4cbb52595005522d2aed5d47282a0942918eCurrent finding/review disposition
SA-20261013175832-63767dde3297: PASS, 15/15 acceptance criteria, 0 missing.5d6fe9bf…fixes the hosted TS2367 regression exposed by the OpenWA startup-state remediation by re-reading post-await service state instead of comparing the stale control-flow-narrowed field. Runtime behavior is unchanged.Fresh local verification for
5d6fe9bf…276frozen-baseline errors, no regression)196frozen-baseline errors, no regression)npm run typecheck:core: PASSnpm run quality:scan:fast: 20/20 PASSnpm run test:security: 23/23 PASS--pass-on-unpruned-suppressionsgit diff --check: PASSnpm testwas attempted locally but the KitMCP connector aborted mid-run before a terminal test summary; no product failure was recorded. Exact-head protected hosted CI is authoritative for the full-suite result.Hosted exact-head oracle
Fresh CI, API Route Typecheck, OpenCodeReview, CodeQL, semgrep, and DAST runs were triggered on exact head
5d6fe9bf…. They must be terminal-successful before final acceptance; all new review threads must be dispositioned/resolved against this same head.Integration sequencing / blocker
AP-ISS-0149 / PR #123 remains open and unmerged and is the API Bridge lifecycle predecessor. This PR must not be integrated yet. After AP-ISS-0149 reaches accepted
main, fetch/rebase this branch, revalidate the API Bridge trust-boundary behavior against that accepted lifecycle implementation, and obtain fresh exact-head hosted evidence. AP-ISS-0136 remains blocked until this issue is terminal.