HarperZ9/context-curator-liteExplainer, built from commit 1f8de37All repository explainers

Context Curator Lite

Turn a messy workspace into a small context bundle the next agent can trust.

What it does for you

A model cannot read a large workspace every session. Context Curator Lite scans your local notes and session logs for the lines that matter, such as next actions, blockers and ideas, scrubs emails and secret-shaped values, and writes a compact bundle. Each item keeps a reference to its source file, and an optional envelope adds content hashes and a command to expand it, so the next agent can go back to the original and check it.

Source: README.md at 1f8de37 (version 0.2.0)

Watch

No concept film fits this tool closely yet. The walkthrough below covers it in text, with real commands and output.

Video walkthrough: coming with the next release.

How it works, one step at a time

Scroll, or use the step buttons. The panel follows the two sample files in examples/demo.py: a notes file and a short session log. Every line is output from context-curator-lite at commit 1f8de37.

  1. 01

    Two files from a working session

    The notes file has a heading, a next action, a blocker, an architecture idea, a line with an email address and a token, and a line of chatter. The session log has a user turn asking to resume a handoff and an assistant turn with nothing in it.

    Source: examples/demo.py

  2. 02

    Classify by keyword

    Each line is matched against keyword rules, checked in order. Blocker, blocked, error or failed makes a blocker. Todo, next, resume, continue or handoff makes a next action. Architecture, design, invariant, whitepaper, research or idea makes an idea. Lines that match no keyword are dropped.

    Five lines matched a keyword before scrubbing; four survive as curated records.

    Source: src/context_curator_lite/curator.py, classify

  3. 03

    Scrub what should not travel

    scrub replaces email addresses and secret-shaped values. A line holding an email and a GitHub-shaped token comes back as placeholders. The line in the notes with an email and a token does not reach the bundle.

    Source: src/context_curator_lite/curator.py, scrub

  4. 04

    A small bundle, with its own checks

    The run writes four files: a Markdown summary, a JSONL bundle, a manifest and the envelope. The manifest states that no absolute paths were included and no raw transcripts were copied, and gives the counts by kind.

    Source: src/context_curator_lite/curator.py, main

  5. 05

    An envelope that points back to the source

    The Telos envelope lists each source with its SHA-256 and an expansion command, and ties every claim to the source it came from. The next agent can re-read notes.md and check its hash; it does not have to trust the summary.

    Its quality gates say what was checked: readability, freshness and privacy read MATCH, and test evidence reads UNVERIFIABLE, because nothing in the notes was a test result.

    Source: src/context_curator_lite/telos_envelope.py

Walkthrough

Install it, run it once, then use the main feature. Each command below is real, and so is its output.

  1. Install

    Install from a checkout. Python 3.10 or newer.

    $ git clone https://github.com/HarperZ9/context-curator-lite.git && cd context-curator-lite
    $ python -m pip install -e ".[test]"
  2. Scrub before it is stored

    Personal data and secrets are removed from text before curation.

    >>> scrub("reach me at jane@example.com token=ghp_AAAA...A")
    reach me at <email> <redacted-secret>
  3. Curate a project

    Curate a project's notes and sessions into a bundle with a Telos envelope.

    $ context-curator-lite --root ./proj --out-dir ./artifacts --telos-envelope
    "source_files_scanned": 2
    "raw_keyword_matches": 5
    "curated_records": 4
    "counts": {"next-action": 2, "blocker": 1, "idea": 1}
    "absolute_paths_included": false
    "raw_transcripts_copied": false

Output from context-curator-lite at 1f8de37 on Windows with Python 3.12.

What it does not do

Source: README.md at 1f8de37, "Current status" and "Existing technical notes"; src/context_curator_lite/curator.py

Check what stuck

Answer each one in your head before you open it.

Why does the chatter line not reach the bundle?

It contains no keyword, so classification drops it.

How does the next agent check that a claim came from notes.md?

The envelope gives the file's SHA-256 and a command to re-read it, and each claim names its source ref.

Why does test evidence read UNVERIFIABLE?

Nothing in the curated sources was a test result, so it could not be checked.