Skip to content

fix(scripts): build_standing_set exemplar bias — add declarative-posture patterns#155

Merged
cipher813 merged 1 commit into
mainfrom
feat/standing-set-declarative-exemplars
May 22, 2026
Merged

fix(scripts): build_standing_set exemplar bias — add declarative-posture patterns#155
cipher813 merged 1 commit into
mainfrom
feat/standing-set-declarative-exemplars

Conversation

@cipher813
Copy link
Copy Markdown
Owner

Summary

The pre-fix CONSTRAINT_EXEMPLARS list in scripts/build_standing_set.py leaned heavily imperative ("never," "always," "must," "default to"). The 2026-05-22 finding during salience-tier Phase 0 validation attempts: 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.

Adds 10 declarative-posture exemplars representing the same constraint class in declarative shape. Exemplar list 22 → 30. Imperative / declarative split now roughly balanced.

Driver

ROADMAP audit-finding follow-up per feedback_audit_findings_become_roadmap_followups. Filed when the Phase 0 A/B attempt revealed the bias.

Changes

  • scripts/build_standing_set.py: appended 10 new CONSTRAINT_EXEMPLARS:
    • "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"

Composability

  • Phase 1 salience tier (feat(salience): Phase 1 — first-class standing tier (default-off, soak-gated) #154, merged) — operator promotes ~5 career memories via memory_promote MCP tool. This PR helps the Phase 0 env-var fallback path (used as operator override when not flipping the Phase 1 flag) and the auto-suggestion loop (scripts/salience_phase0.sh score) surface the right candidates by default.
  • Composes with [[mnemon-salience-tier-plan-260521]] — operator-judgment + auto-selection. Auto-selection is more useful when the scorer's exemplar set spans the actual constraint shapes in the vault.

Test plan

  • Script imports cleanly (python -c \"import scripts.build_standing_set\")
  • Full suite 836 passing — no test depends on exemplar list (verified via grep)
  • Post-merge: operator runs scripts/salience_phase0.sh snapshot && scripts/salience_phase0.sh score against a fresh vault snapshot; verifies that the top-10 surfaces at least 3 career-context memories alongside the engineering rules

🤖 Generated with Claude Code

…ure patterns

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) <noreply@anthropic.com>
@cipher813 cipher813 merged commit 4a2cfce into main May 22, 2026
9 checks passed
@cipher813 cipher813 deleted the feat/standing-set-declarative-exemplars branch May 22, 2026 14:23
cipher813 added a commit that referenced this pull request May 22, 2026
Seals the 2026-05-22 substrate arc:
- #153 capture-attention Phase A (recurrence-weighted preserve+relate+boost)
- #154 salience-tier Phase 1 (first-class standing tier, +3 MCP tools)
- #155 build_standing_set.py exemplar bias fix

Both new feature paths gated default-off (CAPTURE_ATTENTION_ENABLED,
STANDING_TIER_ENABLED) — operator flips per the soak workflow.

Post-merge ritual:
- tag v0.7.0rc1 + GitHub Release
- twine upload (dist/mnemon-memory-0.7.0rc1.{tar.gz,whl})
- mnemon upgrade web --app-name mnemon-memory --mnemon-version 0.7.0rc1
- mnemon doctor 7/7 against live remote
- operator promotes 5 career memories + flips MNEMON_STANDING_TIER_ENABLED
  for ≥1 week soak

Suite 836 passing. mnemon --version returns 0.7.0rc1.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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