fix(worker): attribute learning to project/team/role and commit the prompt snapshot - #32
Merged
Merged
Conversation
…rompt snapshot LearningJob gains optional projectId/teamId/roleId. enqueue_memory now derives surreal-memory scope keys from them (user_id = project id; agent_id = <team>/<role>, else @project; shared scope = @global) instead of always sending agent_id null, which left every record unattributed. Legacy add_task_step operations get non-null keys too. Already-hashed payloads are left untouched so stored payload hashes and receipts stay valid. process_job commits the prompt snapshot after upsert so session records become visible to pk context. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
This was referenced Oct 4, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Plan PR A2 of the team-aware learning work (design §6, §8 U2).
Attribution.
LearningJobgains optionalprojectId,teamIdandroleId, allserde(default), so jobs queued by older hooks still parse.enqueue_memorynow derives the scope keys from them:user_idis the project id, falling back toproject_scope();agent_idis<team>/<role>when both are set, otherwise@project;@globalfor both.Previously
agent_idwas alwaysnull, which is the source of the unattributed records.Legacy task steps. The legacy
add_task_stepform ({stream, description}) now gets non-nullagent_idanduser_idkeys (PROMETHEUS_PROJECT_ID, or an explicitproject:unknownthat the surreal-memory re-key can repair).Hashed payloads are untouched on purpose. Already-normalized payloads (
add_memory,stream_nametask steps) are bound by their storedpayloadHashand any server receipt, so rewriting them would break reconciliation. New operations get correct keys at the source, the skill-pack memory bridge.Prompt snapshot.
process_jobnow commits it after the upsert. Without that, session records were written to disk but were invisible topk context.Test plan
cargo test -p pk-learning-worker --test attribution, 2 tests:tlm-fixture/api-devand@projectkeys, no queued operation has a null key, and both session entries are in the committed project snapshot;agent_id=@projectanduser_id=$PROMETHEUS_PROJECT_ID, captured at a fake ledger.cargo test -p pk-learning-worker --test worker: 5/5 still pass.🤖 Generated with Claude Code