Conversation
Frames injected memory with an identity-binding header (naming the peer when resolvable) and closes it with an applying-memory directive, so a third-person representation is not read as notes about someone else and stated preferences are not dropped as out of scope. Adds the injection.explicitObservations mode (strip | keep) controlling whether the raw timestamped explicit-observations wall reaches the agent. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
…eugene/first_turn_prompt_configuration
૮ >ﻌ< ა ci reviewran on a7b0363 — Merge remote-tracking branch 'origin/eugene/fix-honcho_loggi ❌ Job failuresCheck contributors / check-attribution · View jobJob Check contributors / check-attribution failed. debug infoCI timingsCI timings · View report · View jobWall time 1445m1s vs 1440m46s (+0.3%). 8 job(s) slower, 3 faster, 1 unchanged.
|
`_TERMINAL_KANBAN_TOOLS` listed only `kanban_complete` / `kanban_block`, so the turn-end guard fired at workers that had already handed the card off correctly: - A build worker that calls `kanban_request_review` moves the card from `running` to `review` (tools/kanban_tools.py `_handle_request_review`), yet `session_called_kanban_terminal()` returned False and the nudge told it "Task is still `running`" — false by then — and to call `kanban_complete`, which would close a card that must go through review. Both goal-mode prompts name that tool explicitly (hermes_cli/goals.py `KANBAN_GOAL_CONTINUATION_TEMPLATE` and `KANBAN_GOAL_FINALIZE_TEMPLATE`), so the prompt and the guard contradicted each other. - Review agents hit the same wall. The review lane spawns through the same `_default_spawn`, which sets `HERMES_KANBAN_TASK`, so the guard is active for them, and the force-loaded sdlc-review skill's decision table ends the request-changes path on `kanban_request_changes`. Adds both handoff tools to the set. Workers that obey their prompt now exit cleanly; the guard still fires for a non-terminal board tool, which is the case it exists for. Covers lifecycle mismatch #2 of NousResearch#94916 only — the `dispatch --dry-run` half is a separate change and is discussed on the issue.
… in the flag table - Dialog 2 now shows the read-then-answer step for one benign prompt and warns against blind timed Enter, and names --permission-mode acceptEdits as the narrower opt-in (idea from PR NousResearch#113456). - Quick Reference row and pitfall #2 carry the opt-in wording instead of teaching Down+Enter as the expected move. - Regenerated the claude-code docs page.
What does this PR do?
Shapes the first-turn memory prompt so injected Honcho memory is read as standing requirements from the current user rather than as background about a third party.
Stacked on
eugene/fix-honcho_logging(config-key repairs); this PR uses the session-start rendering added there. Three changes:## Who this memory is aboutheader naming the peer when it can be resolved, so a third-person representation ("mei wants …") is not misread as notes about somebody else.## Applying this memory, stating that the preferences above are current requirements, not scoped to the project they were stated in, to be reproduced literally where they name a marker or format, and that they outrank the agent's own style defaults. Appended only when the payload actually carries preferences (a card-only or summary-only injection states none), and after budget truncation so it can't be the part that gets cut.injection.explicitObservations(stripdefault |keep).stripdrops the raw timestamped explicit-observations wall from the peer representation and injects only the distilled deductions/patterns;keepinjects the representation as rendered. The choice is load-bearing: a requirement the user stated outright lives in the explicit layer, and the deriver does not always roll it up into a deduction.Related Issue
No open issue.
Fixes #
Type of Change
Changes Made
plugins/memory/honcho/__init__.py_MEMORY_SUBJECT_HEADER[_NAMED]and_subject_header(): identity-binding preamble prepended to the session-start context; falls back to an unnamed binding rather than naming the wrong peer._MEMORY_DIRECTIVEappended inprefetchwhen the injection carries a user representation or dialectic result.injection.explicitObservationsresolver,_strip_explicit_observations(), and the strip branch in_format_first_turn_context. Unknown values fall back to the default with a warning rather than raising; non-string values pass through untouched.plugins/memory/honcho/session.pysubject_peer_id(): resolves the peer a session's memory is about without forcing session creation.tests/honcho_plugin/test_session.pyTestExplicitObservationsModecovering the default, both modes, unknown-value fallback, case/whitespace normalisation, and the empty-after-strip edge case.How to Test
pytest tests/honcho_plugin/ -q— all tests pass, includingTestExplicitObservationsMode.HONCHO_LOGGING=1(from the base PR), inspect a turn-1 record in~/.honcho/injection.log: the payload opens with## Who this memory is aboutand, when a user representation is present, closes with## Applying this memory.injection.explicitObservations: keepand confirm the## Explicit Observationssection reappears in the payload; withstrip(default) it is absent while## Deductive Observationsremains.Checklist
Code
fix(scope):,feat(scope):, etc.)pytest tests/ -qand all tests passDocumentation & Housekeeping
docs/, docstrings) — or N/A (docstrings; behavior config lives in~/.honcho/config.json)cli-config.yaml.exampleif I added/changed config keys — or N/A (new key is Honcho plugin config in~/.honcho/config.json)CONTRIBUTING.mdorAGENTS.mdif I changed architecture or workflows — or N/AScreenshots / Logs
Shape of a turn-1 injection with a user representation present: