From d23569f13792d18fbc07653d9c490a7a02398e87 Mon Sep 17 00:00:00 2001 From: Brian McMahon Date: Fri, 22 May 2026 07:17:34 -0700 Subject: [PATCH] =?UTF-8?q?fix(scripts):=20build=5Fstanding=5Fset=20exempl?= =?UTF-8?q?ar=20bias=20=E2=80=94=20add=20declarative-posture=20patterns?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pre-fix CONSTRAINT_EXEMPLARS leaned heavily imperative ("never," "always," "must," "default to"). Against the real prod vault, the auto-selected top-10 surfaced 100% engineering rules — career / lifestyle / posture constraints spanning multi-year load-bearing facts (runway, recruiter posture, start-date framing, search mode) did not surface despite being equally durable, because the user encodes them declaratively ("Brian's stance," "current preference," "passive/selective mode") rather than imperatively. Added 10 declarative-posture exemplars representing the same constraint class in declarative shape: - "Brian's stance is correct as-is, posture is by design" - "current preference is to wait, not to push" - "his stated preference: keep replies minimal, not desperate" - "passive / selective mode is correct given runway and pipeline" - "their silence is information; outreach signals desperation" - "this decouples cash pressure from outreach push timing" - "lump sum severance through August is in hand, not biweekly" - "deliberately niche, not chasing scale or virality" - "the constraint binding decisions is preference, not necessity" - "soft target for start date preserves negotiating leverage" Exemplar list 22 → 30. Imperative / declarative split now roughly balanced (5 imperative-shape / 7 declarative-shape on inspection). ROADMAP audit-finding follow-up per [[feedback_audit_findings_become_roadmap_followups]] — surfaced during salience-tier Phase 0 validation attempts (handoff 2526). Operator should re-run scripts/salience_phase0.sh against a fresh snapshot to verify the bias fix surfaces career-context memories alongside the engineering rules in the top-10. No tests depend on the exemplar list (verified via grep); suite stays at 836 passing. Co-Authored-By: Claude Opus 4.7 (1M context) --- CHANGELOG.md | 21 +++++++++++++++++++++ scripts/build_standing_set.py | 21 +++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 94bcfd9..4794a87 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,27 @@ ## [0.7.0] - Unreleased +### Fixes + +- **`build_standing_set.py` exemplar bias — added declarative-posture + patterns.** The pre-fix `CONSTRAINT_EXEMPLARS` list leaned heavily + imperative ("never," "always," "must," "default to"). Surfaced + 2026-05-22: against the real prod vault the auto-selected top-10 + was 100% engineering rules — career / lifestyle / posture + constraints spanning multi-year load-bearing facts (runway, + recruiter posture, start-date framing, job-search mode) did not + surface despite being equally durable, because the user encodes + them declaratively ("Brian's stance," "current preference," + "passive/selective mode") rather than imperatively. Added 10 + declarative-posture exemplars representing the same constraint + class in declarative shape. Exemplar list 22 → 30; imperative / + declarative split now roughly balanced. ROADMAP audit-finding + follow-up per `feedback_audit_findings_become_roadmap_followups`. + Operator should re-run `scripts/salience_phase0.sh snapshot && + scripts/salience_phase0.sh score` to verify the bias fix surfaces + career-context memories alongside the engineering rules in the + top-10. + ### Features - **Salience tier Phase 1 — first-class standing-context recall diff --git a/scripts/build_standing_set.py b/scripts/build_standing_set.py index 57f2fd4..fc46cb4 100644 --- a/scripts/build_standing_set.py +++ b/scripts/build_standing_set.py @@ -107,6 +107,27 @@ "runway is not a constraint, optimize for preference not necessity", "X is not Y — assert the constraint explicitly", "this fact conditions reasoning regardless of query similarity", + # ── Declarative-posture exemplars (added 2026-05-22 per ROADMAP P1) ── + # Imperative-shape exemplars above ("never," "always," "must," + # "default to") under-weight career / lifestyle / posture constraints + # that the user encodes declaratively. The 2026-05-22 finding: the + # auto-selected top-10 against the real vault was 100% engineering + # rules; career-context memories spanning multi-year load-bearing + # posture (runway, recruiter posture, start-date framing, search + # mode) did not surface despite being equally durable. These + # exemplars represent the declarative shape of the same constraint + # class — facts stated as if they govern future advice across many + # domains, but phrased as posture not as imperative. + "Brian's stance is correct as-is, posture is by design", + "current preference is to wait, not to push", + "his stated preference: keep replies minimal, not desperate", + "passive / selective mode is correct given runway and pipeline", + "their silence is information; outreach signals desperation", + "this decouples cash pressure from outreach push timing", + "lump sum severance through August is in hand, not biweekly", + "deliberately niche, not chasing scale or virality", + "the constraint binding decisions is preference, not necessity", + "soft target for start date preserves negotiating leverage", ] TIME_BOUNDED_EXEMPLARS = [