Repository navigation
fix(ofrep): isolate degraded flag evaluation failures - #182
roboclaw-bot wants to merge 3 commits into
Conversation
Return sanitized keyed failures without discarding healthy bulk results. Cover real Worker/D1 failures, ETag revalidation and recovery, and document official provider setup. Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com>
Worked on by: - @vincentkoc Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com> OpenClaw-Publication: eb6a8994-3359-4e62-9460-ae53e77b57bf
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
|
Codex review: needs changes before merge. What this changesThis PR returns sanitized per-flag OFREP failures while preserving healthy bulk results and documents official OpenFeature provider setup. Example: The souls flag references missing-variation-internal-detail while theme remains valid.
Review scores
ProductKind: Bug fix · Worth it: Yes · Fix scope: Complete Merge readiness⛔ Needs changes before merge - 2 items remain This PR addresses a real degraded-configuration failure still present on main, but the new provider examples contain a setup-breaking header format error. Priority: P2 Before merge
Findings
Tests
Agent review detailsHow this fits togetherThe public Worker's OFREP router resolves environment configuration through the D1-backed cache, invokes the shared evaluator, and returns OpenFeature-compatible results. flowchart LR
A[OpenFeature provider] --> B[Public Worker boundary]
B --> C[OFREP router]
C --> D[Configuration cache]
D --> E[D1 database]
C --> F[Core evaluator]
F --> G[Per flag result or failure]
G --> A
Technical reviewBest possible solution: Keep the OFREP-local isolation, correct both examples to use header pairs, and provide a sanitized recovery action in the failure message. Do we have a high-confidence way to reproduce the issue? Source establishes the failure deterministically: a missing variation throws from the core evaluator and escapes main's bulk mapping; added Worker/D1 cases exercise that input, but no target code was executed during this review. Is this the best way to solve the issue? The OFREP adapter is the right owner for protocol-specific failure isolation because changing the shared evaluator would alter native and SDK contracts; the documentation must match the verified provider option types. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against 666708d2ebd8. Provenance checked
TestingProof path: in-process harness. SecurityNone. EvidenceAcceptance criteria:
What I checked:
Likely related people:
Review metrics
LabelsLabel changes:
Label justifications:
Rating scale6/6 🦀 challenger crab · 5/6 🦞 diamond lobster · 4/6 🐚 platinum hermit · 3/6 🦐 gold shrimp · 2/6 🦪 silver shellfish · 1/6 🧂 unranked krab. Overall follows the weaker of proof and patch quality; ✨ marks media proof (a screenshot, video, or linked artifact) that directly shows the changed behavior. WorkflowClawSweeper edits this one comment on every review. Comment Reviewed November 1, 2026, 8:02 PM ET / November 2, 2026, 01:02 UTC. |
Use the official header-pair contract and give callers a sanitized next step for failed flag evaluations. Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com>
Problem / impact
An unresolved variation in degraded stored configuration throws during evaluation, turning OFREP bulk requests into a global 500 and losing healthy flags. Admin validation normally prevents these references; this is corruption/degraded-data isolation, not a demonstrated normal-write bug.
Solution
GENERALfailures per flag (single HTTP 400, mixed bulk HTTP 200), keeping healthy results and existing ETag revalidation/recovery. The failure message directs callers to ask the flag owner to check its configuration and retry after repair./v1/eval, evaluator ordering, targeting/rollout assignments, disabled precedence, and reason mappings untouched.Evidence
eecdac3: reproduced the object-header spread TypeError, verified header-pair construction, and reran all 17 OFREP tests, lint, full workspace typecheck, docs build andgit diff --checksuccessfully.eecdac3.Independent follow-up to #181, based on current main; it does not include or depend on that PR's changes. No schema/auth/dependency/SDK/release/deployment changes.
Worked on by