Repository navigation
Conversation
The first of three stacked pull requests split out of apache#1806 at the review's request; the decision records and scripts/verify follow on top of it. CONTEXT.md records eight terms where ordinary usage or generic tool knowledge misleads, such as "adapter", which names three different things, and the default result builder, which differs between Driver and driver.Builder. Each term names the code it describes. CONTRIBUTING.md gains a "Finding your way around" section that points at it. The documentation fixes: - CONTRIBUTING.md linked the developer setup guide by a path that does not resolve, said "getting setup", and described CircleCI, which the project no longer uses. - README.md's link to the developer setup guide did not resolve. - writeups/developer_setup.md installed with `pip install '.[dev,test]'`, which installs neither the dev nor the test dependency group, and its test section described CircleCI, .ci/ scripts and requirements-test.txt, none of which exist. It now installs with `uv sync --group test` and says where CI's exact commands live. - The SQL lineage records 2609-02 and 2609-03 now cite each other by their own numbers.
This was referenced Nov 10, 2026
This branch has not been deployed
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.
The problem: a newcomer to Hamilton, person or AI agent, can't learn from the repository what its overloaded words mean: "adapter" names three different things. The guides they would start from send them wrong:
CONTRIBUTING.mdand the README link a setup guide that isn't there, and the setup guide's install command installs neither thedevnor thetestdependency group.What changes:
CONTEXT.md, a glossary of eight terms that mean something specific here, each checked against the code it describes; and fixes toCONTRIBUTING.md, the README, the developer setup guide and two SQL lineage records, each listed below.Where this sits: split out of #1806 at the review's request into three stacked pull requests, one commit each; this is the bottom:
scripts/verify.They merge bottom-up, each rebased onto
mainafter the one below lands. This one depends on neither of the others.Shown working, at 8da307b:
uv run prek run --all-files --hook-stage pre-merge-commit: passes, license headers included.python3 linkcheck.py . 8da307bf(described below):6 Markdown files, 6 relative links checked, 0 problems.pull_requestfilter.Decisions:
Debt left: nothing checks the glossary against the code after this commit; a renamed class or a new kind of adapter needs a hand edit.
Before and after (an illustrative example). Task: name a new class that plugs into execution.
DataLoaderclasses in the adapter registry,HamiltonGraphAdaptersubclasses, and the lifecycle adapters passed toBuilder.with_adapters. Then you guess which one your class is.CONTEXT.md's "adapter" entry names the three meanings and the code behind each, so you can pick the term that matches what your class does.What changes, in full
CONTEXT.mddefines eight terms: the three things called an adapter; function versus node; function modifier and its phases; config, inputs and overrides; result builder; hook, method and validator; materializers versus the data loader and saver decorators; and extension versus plugin module.CONTRIBUTING.mddeveloper_setup.mdthat doesn't exist; it now linkswriteups/developer_setup.md;README.mdlinked the same missingdeveloper_setup.md; it now linkswriteups/developer_setup.md.writeups/developer_setup.mdpip install '.[dev,test]', butdevandtestare dependency groups, not extras, so that command installed neither; it now usesuv sync --group test;.ci/scripts andrequirements-test.txt; it now usesuv run pytest, says which CI step each command mirrors, and where the workflow keeps the exact commands;dotfor the graph-rendering tests, andHAMILTON_TEST_POSTGRES_URLfor the PostgreSQL tests;.venv.writeups/adr/2609-02and2609-03cite each other by their own numbers, with links.How the link check works
linkcheck.py <repo> <commit>is a short script of mine, kept outside the repository. It checks that every relative link in the Markdown files the commit changes resolves in that commit's tree, and that those files mention no glossary, record or harness file the tree lacks, so this pull request can land before the two above it.