docs(journal): make project attribution mandatory effort, tag conditional output#212
Merged
Merged
Conversation
…onal output
Journal Log entries previously had to carry a #projects/<slug> prefix on
every line, with a fake #projects/unknown slug as the fallback when an
activity could not be attributed. That placeholder masquerades as a real
project and pollutes the #projects/* namespace.
Separate the two jobs that single rule conflated:
- Attribution stays mandatory EFFORT: every entry must still attempt
resolution via project_list + aliases.
- The tag is conditional OUTPUT: emitted only on a genuine match, using
the canonical registry slug (not an alias). After an attempted-and-failed
match the entry is left untagged - no placeholder slug.
- Omissions are surfaced at approval ("N entries I couldn't attribute: ...")
so they stay visible and auditable, never silent.
Also fixes the worked example to use the canonical #projects/ecg-inquiry
instead of the electricrag alias.
Knowledge-store edit to journal/update-directions only; no code change
(journal.py never enforced the tag). docs_validate passes clean (434 units,
all checks). Blind behavioral test of a naive agent against the new
directions confirmed correct behavior: attributed entries tagged with the
canonical slug, a non-project life event left untagged and flagged at
approval rather than stamped #projects/unknown.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Kaden McKeen <mckeenkaden@gmail.com>
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.
What
Reworks the journal-update tagging rule in
journal/update-directions. Previously every Log entry had to carry a#projects/<slug>prefix, with a fake#projects/unknownslug as the fallback for unattributable activity. That placeholder masquerades as a real project and pollutes the#projects/*namespace.Why
A single "MUST tag every entry" rule conflated two different jobs. This splits them:
project_list+ aliases.This preserves the anti-laziness pressure of the old rule (the agent still has to do the attribution work) while killing the bogus-slug failure mode.
Also fixes the worked example to use the canonical
#projects/ecg-inquiryinstead of theelectricragalias.Scope
Knowledge-store edit to
journal/update-directionsonly. No code change —journal.pynever enforced the tag; the rule lives entirely as directions prose.docs_validatepasses clean (434 units, all 14 checks).Verification
A blind behavioral test (a naive agent given only the new directions, with no hint of the expected outcome) confirmed the intended behavior end to end:
electricrag→#projects/ecg-inquiry),#projects/unknown.