gaganb.pageResume

Checkpoint

Project memory that stays with the code

Year
2026
Type
Developer Tool / AI / Automation
Role
Creator / Sole Builder
Status
Paused - working core; published to PyPI

Snapshot

GOAL

Preserve project context continuously so new and returning developers do not have to reconstruct repository history manually.

CHALLENGE

Generate useful explanations without asking an LLM to rediscover deterministic facts that Git already knows.

OUTCOME

A published Python package with working checkpoints, catch-ups, PR summaries and onboarding context, plus a 29.9% observed successful-run runtime reduction after an optimization period.

Checkpoint came from having to reconstruct old project context before I could even begin contributing.

01.1The internship problem

At the beginning of my internship I was assigned older projects that had not been maintained particularly well. Before I could contribute, I first had to reconstruct what the project was, how it worked, why it looked the way it did and what had changed before I arrived.

The frustrating part was that Git history existed. The information was technically present, but not in a form that helped a new or returning developer understand the project quickly.

BurntDosa / sprout · CommitsView on GitHub ↗
main October 2026
docs: document upgrade steps for returning maintainersCleo committed · 2026-10-08
ee814c0
feat: add health endpoint without reading plant storageBen committed · 2026-10-08
33cf8bc
test: verify migration backup and idempotencyCleo committed · 2026-10-08
277188e
fix: migrate plant storage to explicit schema versionBen committed · 2026-10-07
b9d8436
build: add yaml dependency for service settingsCleo committed · 2026-10-07
ef1521b
test: cover overdue and due-today reminder boundariesBen committed · 2026-10-06
24153c1
fix: include plants due on the current dayCleo committed · 2026-10-06
3894c30
feat: move reminders into api route namespaceBen committed · 2026-10-05
af60d81
refactor: rename watering interval configurationCleo committed · 2026-10-05
b26f83c
feat: start local plant reminder serviceAva committed · 2026-10-02
f15c0ae
MASTER_CONTEXT.mdView on GitHub ↗
PreviewCode

Master Context

Sprout is a small, read-only plant-watering reminder API. It loads plant records and reminder settings from local files, calculates which plants are due, and exposes the results over HTTP. It does not send notifications or update watering dates. Its checked-in plant data is a sample, not a production database.

The repository also serves a second purpose: it is a public demo of Checkpoint running in GitHub Actions. Checkpoint produces commit and PR summaries in checkpoints/, returning-author briefings in catchups/, and this onboarding guide in MASTER_CONTEXT.md. The README says the October 2026 project history is fictional; the generated documents come from live Checkpoint runs. Treat the service and its history as a demo, and use the current README and upgrade notes when operating it.

FIG. 01 · MASTER_CONTEXT.md

01.2Three different context moments

I started thinking about developer context as three related but different moments.

Those moments need different levels of detail, but they can all be built from the same preserved history if context is captured continuously.

BurntDosa / sprout · CommitsView on GitHub ↗
main October 2026
docs: document upgrade steps for returning maintainersCleo committed · 2026-10-08
ee814c0
feat: add health endpoint without reading plant storageBen committed · 2026-10-08
33cf8bc
test: verify migration backup and idempotencyCleo committed · 2026-10-08
277188e
fix: migrate plant storage to explicit schema versionBen committed · 2026-10-07
b9d8436
build: add yaml dependency for service settingsCleo committed · 2026-10-07
ef1521b
test: cover overdue and due-today reminder boundariesBen committed · 2026-10-06
24153c1
fix: include plants due on the current dayCleo committed · 2026-10-06
3894c30
feat: move reminders into api route namespaceBen committed · 2026-10-05
af60d81
refactor: rename watering interval configurationCleo committed · 2026-10-05
b26f83c
feat: start local plant reminder serviceAva committed · 2026-10-02
f15c0ae
checkpoints/Checkpoint-Ben.mdView on GitHub ↗
PreviewCode

Commit 33cf8bc — 2026-10-08

Context

catchups/Catchup_ava_sprout_example.mdView on GitHub ↗
PreviewCode

While You Were Gone — Since October 02, 2026

Since October 2, Sprout’s reminder API and configuration changed, and existing plant data now needs a one-time migration before reminders can load it. You also have a lightweight health endpoint, stronger reminder and migration tests, and updated docs that frame the repository as a Checkpoint demo. The latest changes mostly update documentation and allow generated Checkpoint files to be tracked in Git; they do not change application behavior.

MASTER_CONTEXT.mdView on GitHub ↗
PreviewCode

Master Context

Sprout is a small, read-only plant-watering reminder API. It loads plant records and reminder settings from local files, calculates which plants are due, and exposes the results over HTTP. It does not send notifications or update watering dates. Its checked-in plant data is a sample, not a production database.

FIG. 02 · Sprout commits and context files

01.3The success condition

The goal was not to create another documentation dashboard. I wanted context to live close to the repository and be updated as work happened.

A developer returning after time away should be able to understand the important changes without manually reading every file and every commit. A new developer should be able to get an architecture and decision overview without depending on someone who still remembers the project.

Checkpoint became better as I removed AI and framework complexity from the parts Git already solved deterministically.

02.1The first version was heavier than the problem

DSPy · Gemini · LangGraph · ChromaDBGit · LiteLLM · Markdown

The first architecture used DSPy and Gemini, LangGraph and ChromaDB. At that stage I was still exploring both the problem and the frameworks, so a more agentic/vector-heavy architecture seemed reasonable.

Once I understood the workflow better, it felt overbuilt. I did not need a vector database to rediscover which commit changed a file. I did not need a graph framework to determine a commit range.

That realization became the most important architecture change in the project.

BurntDosa / Checkpoint · CommitView on GitHub ↗

feat: remove DSPy, replace with direct LiteLLM calls

Gagan N Bangaragiri committed on 2026-03-06 · 49dc5e5

checkpoint_agent/agents.py-import dspy
checkpoint_agent/agents.py+import litellm
checkpoint_agent/agents.py-class UnifiedCheckpointSignature(dspy.Signature):
BurntDosa / Checkpoint · CommitView on GitHub ↗

feat: remove ChromaDB dependency

Gagan N Bangaragiri committed on 2026-03-06 · 315073c

.gitignore-.chroma_db/
checkpoint_agent/config.py- vector_db_path: str = Field(default=".chroma_db", description="ChromaDB storage path")
checkpoint_agent/config.py- vector_db: bool = Field(default=True, description="Enable ChromaDB semantic search")
BurntDosa / Checkpoint · CommitView on GitHub ↗

feat: remove LangGraph and questionary to reduce install size

Gagan N Bangaragiri committed on 2026-03-06 · 8af0051

checkpoint_agent/graph.py-from langgraph.graph import StateGraph, END
checkpoint_agent/setup_wizard.py-import questionary
checkpoint_agent/setup_wizard.py- provider = questionary.select(
FIG. 03 · Checkpoint commits

02.2Let Git do deterministic work

The model reconstructs version controlGit handles those facts; the model explains change

Git already knows who changed something, when they changed it, which commits are relevant and what the exact diff is. Checkpoint therefore lets Git handle those facts and sends only the context that still needs interpretation to the model.

That makes the model input smaller and the behaviour easier to reason about. The model explains change; it does not reconstruct version control.

The best architecture was not the one with the most AI in it.

02.3Why Markdown became the memory layer

Separate human docs and machine memoryMarkdown in the repository

The generated context is stored as Markdown in the repository. That was deliberate. A developer can open it without another tool, Git can version it, a pull request can review it and a future model can consume the same file as context.

That gives me one source of project context that is readable by both people and models instead of separate human docs and machine memory.

checkpoints/Checkpoint-Ben.mdView on GitHub ↗
PreviewCode
1## Commit `33cf8bc` — 2026-10-08
2 
3## Context
4The commit adds a health endpoint that can respond without reading plant storage. Previously, `Handler.do_GET` only accepted `/api/reminders`; other paths returned 404. The new route exits before reminder handling.
5 
6## Changes
7- `sprout/server.py` — `Handler.do_GET` now recognizes `/health`, sends HTTP 204, ends the response, and returns. The route does not call `due_plants`, `load_plants`, or `load_settings`.
8 
9## Impact
10- Confirmed: `GET /health` returns 204 with no response body and bypasses the reminder route’s storage-related work.
checkpoints/Checkpoint-Ben.mdView on GitHub ↗
PreviewCode

Commit 33cf8bc — 2026-10-08

Context

The commit adds a health endpoint that can respond without reading plant storage. Previously, Handler.do_GET only accepted /api/reminders; other paths returned 404. The new route exits before reminder handling.

Changes

  • sprout/server.py — Handler.do_GET now recognizes /health, sends HTTP 204, ends the response, and returns. The route does not call due_plants, load_plants, or load_settings.
FIG. 04 · checkpoints/Checkpoint-Ben.md

02.4Why GitHub Actions became the default trigger

Local hooksGitHub Actions

The project initially supported local hooks, but GitHub Actions became the natural primary path because the development events already happen there. A push, PR or merge is the moment context should be captured.

That also removes a behavioural dependency on the developer remembering to run a command. The workflow can derive the relevant commit range, generate the context artifact and commit the result back into the repository.

The difficult edge is making sure the automation does not summarize its own generated files or bot-authored commits and create a feedback loop.

02.5Keep model choice configurable

Hard-coded to one providerLiteLLM

The later architecture uses LiteLLM so the model layer is not hard-coded to one provider. Mistral was the model I used in practice, but the case study is not a claim that every provider was tested equally.

The useful abstraction is that Git/context preparation is stable while the interpretation model can be changed through configuration.

The system turns normal Git events into a small set of durable Markdown artifacts: checkpoints, catch-ups, PR summaries and master context.

03.1Commit checkpoints

On a push, the workflow derives the human commit range, filters bot/config-only work, gets the deterministic diff and metadata, and sends the bounded change context to the Checkpoint generator.

The generated checkpoint is prepended to a stable per-author Markdown file. The checkpoint is the smallest unit in the system: a dated explanation of what changed at that moment and why it matters.

Generated Checkpoint paths are excluded from the diff so the tool does not continuously summarize itself.

BurntDosa / sprout · CommitView on GitHub ↗

feat: add health endpoint without reading plant storage

Ben committed on 2026-10-08 · 33cf8bc

sprout/server.py+ if self.path == '/health':
sprout/server.py+ self.send_response(204)
sprout/server.py+ self.end_headers()
checkpoints/Checkpoint-Ben.mdView on GitHub ↗
PreviewCode

Commit 33cf8bc — 2026-10-08

Context

The commit adds a health endpoint that can respond without reading plant storage. Previously, Handler.do_GET only accepted /api/reminders; other paths returned 404. The new route exits before reminder handling.

Changes

  • sprout/server.py — Handler.do_GET now recognizes /health, sends HTTP 204, ends the response, and returns. The route does not call due_plants, load_plants, or load_settings.
FIG. 05 · 33cf8bc and checkpoints/Checkpoint-Ben.md

03.2Personalized catch-up

Catch-up starts from a developer rather than a commit. The system finds that developer's last activity, reads checkpoint entries since then and excludes the requesting author's own changes.

That produces a briefing of what other people changed while the developer was away. When the developer contributes again, the stale catch-up can be removed because the context gap has closed.

Some of the trickier bugs here were ordinary temporal edge cases - identity, self-inclusion and date/timezone behaviour - rather than dramatic AI failures.

BurntDosa / sprout · CommitsView on GitHub ↗
main October 2026
docs: document upgrade steps for returning maintainersCleo committed · 2026-10-08
ee814c0
feat: add health endpoint without reading plant storageBen committed · 2026-10-08
33cf8bc
test: verify migration backup and idempotencyCleo committed · 2026-10-08
277188e
fix: migrate plant storage to explicit schema versionBen committed · 2026-10-07
b9d8436
build: add yaml dependency for service settingsCleo committed · 2026-10-07
ef1521b
test: cover overdue and due-today reminder boundariesBen committed · 2026-10-06
24153c1
fix: include plants due on the current dayCleo committed · 2026-10-06
3894c30
feat: move reminders into api route namespaceBen committed · 2026-10-05
af60d81
refactor: rename watering interval configurationCleo committed · 2026-10-05
b26f83c
feat: start local plant reminder serviceAva committed · 2026-10-02
f15c0ae
catchups/Catchup_ava_sprout_example.mdView on GitHub ↗
PreviewCode

Critical Changes (Must-Read)

  • Migrate plant data before starting reminders. Plant storage is now schema v2: the top-level data must have schema_version: 2, and each plant’s watering date uses last_watered instead of watered_at. load_plants() rejects data that hasn’t been migrated. Stop the service and run python -m sprout.migrate once. The migration backs up the original as .json.bak and uses a temporary file before replacing it. It accepts v1 or unversioned data, returns False for data already at v2, and raises ValueError for other schema versions. It will not overwrite an existing backup.

  • FIG. 06 · Catchup_ava_sprout_example.md

    03.3PR summaries

    For pull requests, Checkpoint combines PR metadata, the base-to-head diff and the commit-level checkpoint walkthrough into a higher-level review artifact.

    The goal is to give a reviewer architectural impact, important changes and review context without losing the connection to the individual commits underneath.

    I do not claim a measured review-time reduction; the value here is the implemented workflow and the structure of the context it preserves.

    BurntDosa / sprout · Pull requestsView on GitHub ↗

    test: cover an empty plant collection #2

    open · 0335036

    ConversationCommitsChecksFiles changed
    checkpoints/PR-2-test-empty-reminders.mdView on GitHub ↗
    PreviewCode

    Overview

    This PR adds a regression test for reminder generation when the plant collection is empty. It checks that due_plants returns no reminders for that input, extending the existing reminder tests without changing production code.

    Changes by Area

    • Reminder tests — tests/test_reminders.py
      • Adds ReminderTests.test_empty_collection_has_no_reminders.
      • The test calls due_plants with an empty list, the fixed date 2026-10-09, and a watering interval of seven days.
      • It asserts that the result is exactly []. The assertion covers both the absence of reminder entries and the expected empty-list result.
      • The existing tests in this file cover non-empty collections with different watering schedules. This addition puts the empty-collection case alongside those examples, using the same reminder function and a fixed date.
    FIG. 07 · Pull request #2

    03.4Master Context for onboarding

    The onboarding path builds a broader project view. It can combine the repository tree, recent checkpoints, README/dependency context and generated architecture diagrams into MASTER_CONTEXT.md.

    For Python projects, some diagrams can be produced deterministically from AST analysis. For multi-language projects, selected files can be passed to the model for a language-agnostic diagram. The point is orientation, not perfect reverse-engineering.

    This artifact is the answer to the original internship problem: a new developer gets the project mission, architecture, decisions, gotchas and starting point without reconstructing everything manually.

    MASTER_CONTEXT.mdView on GitHub ↗
    PreviewCode

    Architecture Overview

    The source package is sprout/. Its responsibilities are split across three modules:

    • sprout/reminders.py owns data loading and reminder calculation. The checkpoint history names load_settings() and load_plants() as the loaders, and due_plants() as the function that selects records due for watering. Keeping these operations outside the HTTP handler gives the calculation and file-loading logic a place to be tested independently of HTTP.

    Key Decision Log

    1. Keep reminder logic separate from HTTP handling. sprout/reminders.py contains loading and due-date logic; sprout/server.py handles requests. The checkpoint describes this separation as the structure of the service. It makes the HTTP layer a consumer of the reminder logic rather than the owner of it. Rationale for this separation is documented as separating reminder logic from HTTP handling.

    Gotchas & Tech Debt

    • Old plant files will not load until migrated. load_plants() requires schema_version == 2. Older v1 or unversioned files need python -m sprout.migrate before the reminder service can use them. The migration changes watered_at to last_watered.

    Getting Started

    1. Check the project instructions. Read README.md and docs/upgrade.md before running or changing an existing installation. The README identifies the service as a demo and points maintainers to the upgrade guide.

    FIG. 08 · MASTER_CONTEXT.md

    03.5From experiment to installable tool

    Checkpoint was published to PyPI as checkpoint-agent, with a setup guide and GitHub Actions templates. That forced the project to become more than a repo-specific experiment: configuration, packaging, release workflows and backwards compatibility all became part of the product.

    The release workflow builds the package, verifies the version and uses trusted publishing rather than embedding long-lived PyPI credentials.

    BurntDosa / Checkpoint · ReleasesView on GitHub ↗
    v1.2.6 Latest2026-11-10
    v1.2.6
    v1.2.5 — Updating PyPi Description 2026-03-14
    v1.2.5
    v1.2.4 — Added a logo to the bot 2026-03-14
    v1.2.4
    v1.2.3 — Fix timezone mismatch in checkpoint entry filtering 2026-03-13
    v1.2.3
    v1.2.2 — Filter pre-existing entries from catchups, clean date formatting 2026-03-13
    v1.2.2
    v1.2.1 — Fix catchups including user's own changes 2026-03-13
    v1.2.1
    v1.2.0 — Prompt Quality + Catchup Lifecycle + Folder Split 2026-03-13
    v1.2.0
    v1.1.1 2026-03-13
    v1.1.1
    v1.1.0 2026-03-12
    v1.1.0
    v1.0.6 2026-03-12
    v1.0.6
    v1.0.5 2026-03-12
    v1.0.5
    v1.0.4 2026-03-12
    v1.0.4
    v1.0.3 - Made the documentation living 2026-03-12
    v1.0.3
    v1.0.2 2026-03-12
    v1.0.2
    v1.0.1 - Changes to the setup 2026-03-12
    v1.0.1
    v1.0.0 — Initial Release 2026-03-06
    v1.0.0
    .github/workflows/publish.ymlView on GitHub ↗
    11id-token: write # For trusted publishing (OIDC)
    45uses: pypa/gh-action-pypi-publish@release/v1
    FIG. 11 · Checkpoint releases

    03.6Observed workflow optimization

    I also went back through the GitHub Actions history around the 29fd5bf "Optimised Checkpoints" period to get a defensible runtime comparison.

    BurntDosa / Checkpoint · Code CheckpointView on GitHub ↗
    ✓
    chore: clean up repo — remove tracked checkpoints, tests, and .DS_Sto…2026-03-14 · 3f0ac52
    1m 12s
    ✓
    fix: normalize timezone before filtering checkpoint entries by date2026-03-13 · c0dbe15
    1m 27s
    ✓
    fix: filter checkpoint entries by date, clean up catchup date formatting2026-03-13 · a2cbd41
    1m 27s
    ✓
    fix: exclude user's own checkpoint from catchup generation2026-03-13 · 4376da2
    1m 05s
    ✓
    feat: improve prompt quality, split catchups to own folder, add catch…2026-03-13 · d5e74e9
    1m 22s
    ✓
    chore: bump version to 1.1.12026-03-12 · 8760aa7
    1m 22s
    ✓
    fix: filter checkpoint system files from diffs, regenerate MASTER_CON…2026-03-12 · f0cfaae
    1m 41s
    ✓
    fix: publish workflow checks out release tag and verifies version2026-03-12 · 2a1d132
    1m 18s
    ✓
    feat: v1.1.0 — fix first-commit boilerplate, security, robustness, cl…2026-03-12 · 7655cd6
    1m 08s
    ✓
    docs: update README to reflect --init replacing --install-ci and setu…2026-03-12 · 24a017b
    1m 09s
    ✓
    feat: rename --install-ci to --init2026-03-12 · 70f155c
    1m 22s
    ✓
    feat: merge --init into --install-ci, remove setup wizard2026-03-12 · ca0e205
    1m 40s
    ✓
    fix: update CI template to actions/checkout@v4, setup-python@v5, auto…2026-03-12 · 617b4d2
    1m 04s
    ✓
    fix: remove dspy from llm_diagrams, use direct LiteLLM calls2026-03-12 · 3fda053
    1m 09s
    ✓
    feat: living per-author checkpoint files + auto-generate MASTER_CONTE…2026-03-12 · f57438e
    1m 53s
    ✓
    feat: living per-author checkpoint files + auto-generate MASTER_CONTE…2026-03-12 · e341fd8
    1m 00s
    ✓
    fix: use pip install checkpoint-agent in CI template instead of pip i…2026-03-12 · 29bba74
    1m 17s
    ✓
    feat: remove API key prompt from init wizard, use GitHub Secrets instead2026-03-12 · d232280
    1m 01s
    ✓
    docs: rewrite README to reflect current architecture2026-03-06 · 0adb903
    1m 20s
    ✓
    chore: fix package URLs to point to correct repo2026-03-06 · f8e138f
    0m 57s
    ✓
    fix: stop hallucinating team members and skip all push authors from c…2026-03-06 · f06a7b2
    1m 02s
    ✓
    fix: correct invoke signature and update live workflow file2026-03-06 · 5a74008
    0m 56s
    ✓
    fix: accept extra kwargs in _App.invoke and commit all checkpoint files2026-03-06 · eb36943
    1m 36s
    ✓
    fix: preserve catchup history and skip committer in catchup-all2026-03-06 · aa12530
    1m 34s
    ✓
    feat: remove LangGraph and questionary to reduce install size2026-03-06 · 8af0051
    1m 40s
    ✓
    feat: remove DSPy, replace with direct LiteLLM calls2026-03-06 · 49dc5e5
    2m 29s
    ✓
    feat: remove ChromaDB dependency2026-03-06 · 315073c
    2m 26s
    ✓
    fix: install from local repo until published to PyPI2026-03-05 · 255c45b
    2m 17s
    ✓
    fix: raise llm.py default max_tokens from 2000 to 80002026-03-05 · 6ff0865
    2m 37s
    ✓
    feat: checkpoint-stats, PR support, branch coverage, quality & cleanup2026-03-05 · 6370d9a
    1m 45s
    ✓
    feat: checkpoint-stats, PR support, branch coverage, quality & cleanu…2026-03-05 · c1dab53
    3m 38s
    ✓
    feat: checkpoint-stats, PR support, branch coverage, quality & cleanup2026-03-05 · fe7e9d8
    6m 56s
    ✓
    fix: skip bot-authored commits during checkpoint generation2026-03-05 · fe7e9d8
    3m 01s
    ✓
    fix: max_tokens 8000, push race condition, PR filename uses branch name2026-03-05 · c5d91ff
    2m 43s
    ✓
    chore: remove last stray commit checkpoint (workflow fix now deployed)2026-03-05 · 08d6c2f
    2m 39s
    ✓
    chore: remove accumulated commit checkpoint files from repo2026-03-05 · 69adc87
    2m 39s
    ✓
    fix: email-based catchup filenames, bot filtering, DS_Store cleanup2026-03-05 · f8eadd7
    2m 59s
    ✓
    fix: only checkpoint new commits on branch push, not full history2026-03-05 · e48d0ef
    4m 06s
    ✓
    Removed unecessary checkpoints2026-02-17 · a8a3957
    3m 47s
    ✓
    chore: update config defaults and add checkpoints from local testing2026-02-17 · e45d7f2
    4m 17s
    ✓
    chore: add checkpoint for c57c784 commit2026-02-17 · ff39404
    4m 05s
    ✓
    fix: default to Mistral provider and add API key validation2026-02-17 · 0494e33
    3m 18s
    ✓
    Merge remote changes and resolve MASTER_CONTEXT.md conflict2026-02-11 · 9855fa5
    3m 19s
    29fd5bf · Optimised Checkpoints
    ✓
    Mermaid.js graph features2026-01-13 · 6fa8c31
    3m 44s
    ✓
    docs: add README with usage instructions2026-01-13 · cb6c396
    2m 34s
    ✓
    test push2026-01-13 · 16b2934
    2m 26s
    ✓
    fix(automation): mitigate rate limits with 60s sleep between users an…2026-01-13 · ad9ac9d
    7m 22s
    ✓
    fix(llm): handle rate limits with retry and None output graceful exit2026-01-13 · 71bf07c
    5m 45s
    ✓
    ci: auto-update MASTER_CONTEXT.md on push2026-01-13 · 735b132
    1m 28s
    ✓
    feat: implement onboarding and catchup workflows, clear old checkpoints2026-01-13 · 033cedc
    1m 19s
    ✓
    chore: ignore and remove .chroma_db from git tracking2026-01-13 · a1fa3c3
    1m 17s
    ✓
    inital project setup with the checkpoint agent2026-01-13 · a4a3e04
    1m 27s
    3m02s9 successful runs
    2m08s43 successful runs

    54 seconds, or 29.9% faster on average

    29fd5bf
    FIG. 09 · Code Checkpoint Actions

    Checkpoint reached a working core and public package, then paused while I started extending it toward more repository environments.

    04.1What worked

    I used Checkpoint myself during its initial development. The automatic checkpoint, catch-up, PR summary and onboarding/master-context flows worked, and the package was published to PyPI.

    That is the result I am comfortable presenting: a working developer-context tool with repository-native artifacts and automated GitHub workflows.

    BurntDosa / sprout · FilesView on GitHub ↗
    test/empty-reminders · 0335036
    ▤
    checkpoints/Checkpoint-Ben.md
    994999f
    ▤
    catchups/Catchup_ava_sprout_example.md
    b4bac27
    ▤
    checkpoints/PR-2-test-empty-reminders.md
    b6db70f
    ▤
    MASTER_CONTEXT.md
    02658d3
    BurntDosa / sprout · FilesView on GitHub ↗
    ▤
    checkpoints/Checkpoint-Ben.md
    BurntDosa / sprout · FilesView on GitHub ↗
    ▤
    catchups/Catchup_ava_sprout_example.md
    BurntDosa / sprout · FilesView on GitHub ↗
    ▤
    checkpoints/PR-2-test-empty-reminders.md
    BurntDosa / sprout · FilesView on GitHub ↗
    ▤
    MASTER_CONTEXT.md
    FIG. 10 · Sprout repository files

    04.2How I judged the output

    The generated Markdown was meant for humans, so I judged it by reading it. I looked for whether the explanation was useful, whether it reflected the real diff and whether the document made the repository easier to understand.

    There was no formal evaluation dataset or quality harness. I do not claim factuality scores or measured onboarding-time savings.

    04.3Current status

    The project is paused, with a working core. The newest work was moving toward support for cloud-hosted repository environments, including Azure/GCP/AWS-shaped workflows, but that path has not been fully tested.

    I still want to finish it. The pause is a project-state description, not a claim that the earlier workflows stopped working.

    04.4What I learned

    Checkpoint is where I learned a principle that shows up in my newer projects too: deterministic systems should do deterministic work, and models should be used where interpretation is actually useful.

    It also changed how I think about AI memory. The most useful memory is often not a hidden vector store. Sometimes it is a clear, versioned artifact that a human can read and a model can reuse.

    Context is more useful when it is preserved as part of the work, not reconstructed after the fact.

    04.5Next

    When I return to Checkpoint, the roadmap is focused: finish cloud-hosted repository support, add Bitbucket, add configurable sensitive-context controls for files/paths/patterns/content, and experiment with Simplified Technical English as a writing standard for generated documentation.

    The STE direction is especially interesting to me because the output should read like project documentation, not generic AI prose. I would treat formal ASD-STE100 compliance as a separate future validation question rather than claim it today.