Skip to content

feat: add outcome-driven feedback deactivation - #112

Merged
lipluscodex merged 2 commits into
mainfrom
issue-111-outcome-driven-deactivation
Aug 21, 2026
Merged

feat: add outcome-driven feedback deactivation#112
lipluscodex merged 2 commits into
mainfrom
issue-111-outcome-driven-deactivation

Conversation

@lipluscodex

Copy link
Copy Markdown
Member

Closes #111

soft-start contributionのcredited加算と同一contributionのsibling normalization減算を一体で永続化し、帰属可能なnegative outcomeのexact reversalとdormancy / reactivationをdefault-offで追加します。
mechanics、core/MCP receipt、config provenance、docsと、fresh private snapshot向けresult-free protocol / runner / verifierを固定します。development / holdoutは実行せず、観測をsuccessor Issueへ分離します。

soft-start contributionのcredited deltaと同一contributionのsibling normalization deltaを一体で永続化し、帰属可能なnegative outcomeだけを可逆に不活性化します。correctedと
olled_backはbaseline floorを保ってexact reversalし、supersededはedgeを削除せずdormant化し、独立した後続confirmedで再活性化します。

default-offのcore/MCP/config provenance、mechanics test、fresh private snapshot向けresult-free protocol・runner・verifier・preflightを追加します。このcommitではdevelopment/holdout outputを生成せず、観測はsquash merge後のsuccessor Issueへ分離します。
@lipluscodex

Copy link
Copy Markdown
Member Author

Lin: pair review phase 2 - findings

now

[P1] Interleaved sibling reversal can exceed maximum_edge_weight

record_deactivation_outcome()はsibling mutationの逆適用でnew_weight = old_weight - signed_deltaをそのまま保存します。先にAのconfirmationがBをsibling normalizationで減算し、その後B自身がcredited edgeとして上限まで強化されたあとAをcorrectedすると、A由来の負deltaがBへ無制限に足し戻されます。

現commitのpublic APIだけで、Bを1.9から開始し、A confirmation後にBを独立soft-start/confirmed、最後にAをcorrectedとしたところ、maximum_edge_weight=2.0に対してBが2.03125になりました。既存のbounded-weight invariantと、後続contributionを保った可逆性の両方に反します。

該当境界: src/neuron_graph_rag/storage.py のsibling reversal分岐(現在の1884-1897行付近)。journalまたはpersisted scheduleから適用可能なupper boundを決めて逆写像をclipし、near-cap siblingが後からcreditedになったinterleaving regressionを追加してください。修正後は、通常のexact credited/sibling reversal、baseline floor、restart/idempotency、評価artifact hashを再収束させてください。

later

なし。

accepted

  • result-free freezeとobservationを別Issue / PRへ分離する境界。
  • time / non-use decayと基礎weight以下へのpunitive updateを今回含めない境界。

判定:
- Accept [P1]: sibling normalization の逆適用後に、後続の credited contribution と合成された edge が maximum_edge_weight を超える問題を受理した。単純な上限 clip だけでは後続 contribution の逆適用時に切り詰め量を復元できず、exact reversal を失うため。
- Reject: なし。

修正:
- edge ごとに journal 開始時の weight、reinforced count、上限を保存し、active な signed mutation の総和から逆適用後の状態を再構成する。
- near-ceiling sibling mutation と後続 credited contribution の交錯順序を固定した独立回帰テストを追加する。
- frozen manifest、protocol、gate、audit、既存 mechanics assertion の bytes は変更しない。

@lipluscodex lipluscodex left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lin: Self-review PASS

Issue #111の目的、対象、制約、freeze-only完了条件に対してPR diff、CI、result-free境界を確認しました。

  • default-offで既存audit-only contractとconfig fingerprintを維持
  • corrected / rolled_backはtraceとsaved credited pathへ帰属可能なactive contributionだけを逆適用
  • credited deltaと同一contributionのsibling normalization deltaを一つのsigned journal単位として永続化
  • supersededは削除せずdormant化し、独立saved-path confirmationでreactivation
  • baseline / count / maximumとactive mutationからedge stateを再構成し、interleaving時もboundedかつ順序可逆
  • idempotency、restart、transaction atomicity、locality、MCP receipt / schema / description parityを回帰で確認
  • development / holdoutは未実行、registered output不在、freeze artifactとprivate snapshotの境界を維持
  • 親finding [P1]はAcceptされ、独立回帰と264件full suite、CI / Optional MCP greenで収束

Now findingなし。Observationとlocal adoptionはIssue本文どおりsuccessorへ残します。

@lipluscodex
lipluscodex merged commit 31cf32e into main Aug 21, 2026
2 checks passed
@lipluscodex
lipluscodex deleted the issue-111-outcome-driven-deactivation branch August 21, 2026 12:39
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.

feat: add reversible outcome-driven feedback deactivation

1 participant