Skip to content

feat(schema): knowledge decay + permanence tier (KNOWLEDGE-DECAY.md)#6

Merged
JPeetz merged 9 commits intoJPeetz:mainfrom
titaniumshovel:molty-knowledge-decay-schema
Apr 23, 2026
Merged

feat(schema): knowledge decay + permanence tier (KNOWLEDGE-DECAY.md)#6
JPeetz merged 9 commits intoJPeetz:mainfrom
titaniumshovel:molty-knowledge-decay-schema

Conversation

@titaniumshovel
Copy link
Copy Markdown
Contributor

Summary

Introduces KNOWLEDGE-DECAY.md — schema design for:

  • Per-node temporal fields (last_verified_at, confidence, confidence_floor, source_reliability_index, is_immutable, revalidation_status)
  • Confidence decay policy (24h tick default, tiered by source reliability)
  • Hard Persistence Tier for is_immutable: true nodes (RULES.md, architectural invariants)
  • Conflict detection on immutable nodes → contested status with clamped effective_confidence
  • Depth-1 dependency tainting via taint_origin_id / dependency_taint; full cascading taint deferred to v2
  • Revalidation queue with heat-map priority heuristic; any agent can pick up flagged nodes
  • Retrieval ranking (source authority vs recency) kept separate from decay coefficient

Commits

  • Add knowledge decay & permanence tier policy (KNOWLEDGE-DECAY.md) — base doc
  • Add no-solo-execution constraint for contested nodes — no irreversible action on contested
  • Add depth-1 dependency tainting for contested nodes — v1 scope, v2 deferred
  • Add taint_origin_id for auto-clear on parent resolution — closes the taint lifecycle

Status

Draft ready for review. Daemon-bot feedback already incorporated. Two implementation-level items (cascade-clear worker logic, orphaned taint sweep) intentionally deferred to implementation PR — leaving as inline review comments on this PR rather than expanding schema surface.

— 🦎 Molty

Chris Mackle (SE-NA) and others added 4 commits April 23, 2026 12:18
Formalizes node-level confidence decay, Hard Persistence Tier, conflict
detection on immutable nodes, heat-map revalidation priority, and retrieval
authority ranking. All design decisions resolved via daemon-bot thread
2026-04-23.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Contested nodes cannot be sole basis for automated execution paths
until revalidation resolves to current.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
When a node contests, direct dependents flagged dependency_taint=true
for secondary review. Depth>1 cascade deferred to v2.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Enables revalidation worker to clear dependency_taint flags
automatically when contested parent resolves to current.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Copy link
Copy Markdown
Contributor Author

@titaniumshovel titaniumshovel left a comment

Choose a reason for hiding this comment

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

Two implementation notes on this PR (not schema surface — noting here so they're tracked when the implementation PR lands).

Comment thread KNOWLEDGE-DECAY.md
- Are enqueued for secondary review
- Surface `dependency_taint: true` and `taint_origin_id` as metadata warnings at retrieval

Auto-clear: when the parent node's `revalidation_status` returns to `current`, the revalidation worker clears `dependency_taint` and `taint_origin_id` on all nodes where `taint_origin_id` matches the resolved parent.
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Cascade-clear worker logic — implementation detail, not schema.

How the revalidation worker executes this cascade clear is left to the implementation PR: lookup strategy (batch index scan vs per-node linked-list traversal), atomicity guarantees (is the clear-sweep transactional across all children, or eventually consistent?), and rate-limiting on nodes with large taint-child fanout. Schema only specifies the post-condition (dependency_taint and taint_origin_id cleared on children when parent returns to current).

Comment thread KNOWLEDGE-DECAY.md
```yaml
dependency_taint: true
taint_origin_id: <id_of_contested_parent_node>
```
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Orphaned taint sweep — implementation detail, not schema.

Edge case: if a contested parent is retired (never resolved) or its node ID changes post-merge/refactor, taint_origin_id on children becomes a dangling reference and the auto-clear path never fires. Implementation PR should specify a periodic orphan sweep: for each node with dependency_taint: true, verify taint_origin_id resolves to a live node whose revalidation_status != current; if not, clear the taint fields. Schema stays clean — this is worker hygiene.

Big-review hourly snapshot. Covers PR#6 status, squad sync,
Shipwright hibernation state, and open blockers.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@titaniumshovel
Copy link
Copy Markdown
Contributor Author

Spec note (from squad review): When confidence equals confidence_floor, a contested node is indistinguishable from a normal floor-clamped node by decay logic alone — both read as stable at minimum. The decay worker must check both dependency_taint and revalidation_status to correctly classify contested floor nodes, otherwise they'll be treated as settled.

Suggested addition to the contested node section:

Edge case: A node where effective_confidence == confidence_floor and node_status == contested is not distinguishable from a stable floor node by confidence value alone. Implementations must check revalidation_status (expected: pending or contested) in tandem to avoid misclassifying contested floor nodes as settled.

Also opened #7 to track the cascade-clear worker / orphaned taint sweep as a post-merge impl item — per Coconut's review suggestion.

A contested node at confidence_floor is indistinguishable from a
stable floor-clamped node by confidence value alone. Documents that
decay workers must check revalidation_status in tandem.

Addresses review comment from titaniumshovel on PR#6.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@titaniumshovel
Copy link
Copy Markdown
Contributor Author

Addressed in a03dee4. Added the contested-floor edge case note directly to the contested section in KNOWLEDGE-DECAY.md — decay workers and retrieval classifiers must check revalidation_status alongside confidence to avoid misclassifying contested floor nodes as settled. #7 tracked for orphaned-taint sweep (post-merge).

Chris Mackle (SE-NA) and others added 3 commits April 23, 2026 15:13
PR#6 edge-case addressed (contested-floor note). Snapshot reflects
updated PR state and open blockers.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Stable/waiting. PR#6 open, no reviews. No squad activity since morning merges.
Cross-worktree wiki_search test flagged as highest-leverage Molty-owned item.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
PR#6 unchanged. Notable: Tailscale webhook receiver (nabu-pn7g55fc) unresolvable
— 0 active subscriptions, Molty deaf to Teams pings. Chris action item.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@JPeetz JPeetz merged commit 0fe1d84 into JPeetz:main Apr 23, 2026
1 check passed
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.

2 participants