Skip to content

Commit 6fe095b

Browse files
committed
Lead the README with the atom thesis, in a plainer voice
The opening argued structural authority. That is a safety property, not the bet this project is making, and it was argued in a register that read as pretentious. It now opens on atoms: a reusable unit with identity, typed signature, contract, documentation, declared effects, and evidence, larger than a helper function and smaller than a workflow, reading nothing outside its arguments. Atoms compose into molecules, molecules into control flow, control flow into a program. Correctness is named as the dimension being optimized, and cost as its consequence: a verified atom is capital, and reusing it collapses eleven stages into a single obligation, that it still passes the new run's cases derived from the new contract. The cheaper-model claim is written as the hypothesis it is, and the kill criterion the plan attaches to reuse is stated up front rather than buried in the limitations. Authority and the known/ambiguous/recommended split are kept as the habits they are, in one paragraph. Every specific claim was read out of docs/plan.md or internal/pipeline first. Change-Log: CL-20260802-026 Dev-Log: DL-20260802-036 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1 parent 5337f43 commit 6fe095b

3 files changed

Lines changed: 142 additions & 48 deletions

File tree

CHANGELOG

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,46 @@ Dev-Log:
4242

4343
Entries
4444
-------
45-
Change-ID: CL-20260802-025
45+
Change-ID: CL-20260802-026
4646
Commit: pending
4747
Date: 2026-08-02
48+
Type: The README leads with the atom thesis instead of the authority model, in
49+
a plainer voice
50+
Request-or-TODO: User: "the readme souns so pretentious, this is an experimental
51+
coding agent where we build large programs from the ground up using well
52+
defined atoms. the theory is atoms are building blocks, so if they are well
53+
defined and reusable we enhance correctness and cost as we can use cheaper
54+
models perhaps after the atom was already created, correctness is the biggest
55+
dimension we are working on and we are betting big on FP and atomicity, refine
56+
the readme based on teh plan and my opinion of the project"
57+
Outcome: The opening argued structural authority, which is a safety property
58+
rather than the project's bet, and argued it in an aphoristic register the
59+
user found pretentious. It now opens on atoms: a reusable unit with identity,
60+
typed signature, contract, documentation, declared effects, and evidence,
61+
larger than a helper and smaller than a workflow, reading nothing outside its
62+
arguments. Atoms compose into molecules, molecules into control flow, control
63+
flow into a program. Correctness is named as the dimension being optimized and
64+
cost as its consequence -- a verified atom is capital, and reusing it collapses
65+
eleven stages into one obligation, that it still passes the new run's cases
66+
derived from the new contract. The cheaper-model claim is stated as the
67+
hypothesis it is rather than as a result, and the kill criterion the plan
68+
attaches to reuse is stated in the opening rather than buried in the
69+
limitations. Authority and the known/ambiguous/recommended split are kept, in
70+
one paragraph, as the habits they are. A section on how atoms are kept and
71+
re-verified was added; the pipeline prose was sanded of its grander phrasing;
72+
the GitHub description was rewritten to match
73+
Affected-behavior: None. Documentation only
74+
Compatibility-or-migration: None
75+
Verification: Every claim was read out of docs/plan.md or internal/pipeline
76+
before being written: the atom definition, molecule registration, the
77+
re-verification obligation, and the reuse kill criterion. No stage numbers
78+
from the plan's newer flow were used, since internal/pipeline is what the
79+
diagrams document
80+
Dev-Log: DL-20260802-036
81+
82+
Change-ID: CL-20260802-025
83+
Commit: 5337f43
84+
Date: 2026-08-02
4885
Type: The day's repository work is backfilled into TODOS.md, including the
4986
server-side configuration no commit can carry
5087
Request-or-TODO: User: "review the latest commits against the todo list and

DEVLOG

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,46 @@ Next-safe-step:
2525

2626
Entries
2727
-------
28+
Dev-Log: DL-20260802-036
29+
Date: 2026-08-02
30+
Status: README rethemed around atoms
31+
Change-ID: CL-20260802-026
32+
Commit: pending
33+
Request-or-TODO: User: the README sounds pretentious; the project is an
34+
experimental agent building large programs from well-defined reusable atoms,
35+
correctness first, betting on FP and atomicity
36+
Goal: Make the README describe the bet the project is actually making, plainly
37+
Assumptions: The user's framing is authoritative for what the project is for,
38+
and the plan is authoritative for the details. Both were used: his thesis for
39+
the shape, the plan for every specific claim
40+
Decisions: Structural authority moved from the opening to a closing paragraph of
41+
the same section. It is real and worth stating, but it is a property of how
42+
the agent is allowed to act, not the reason the project exists -- leading with
43+
it described the safety rails rather than the building. The cost claim is
44+
written as a hypothesis, because the user said "perhaps" and the plan attaches
45+
a kill criterion to exactly this question; asserting a cost win the prototype
46+
exists to test would be the same overstatement the documentation warns against
47+
everywhere else. Stage numbers were taken from internal/pipeline rather than
48+
from the plan's newer flow, where the reuse decision sits at a different stage
49+
number, because the diagrams in this README document the committed package
50+
Files-or-schemas: README.md. GitHub repository description updated server-side
51+
Validation: The atom definition, the molecule-registry rationale, the
52+
re-verification obligation, and the kill criterion were each read out of
53+
docs/plan.md before being written
54+
Failures-or-discarded-approaches: The first README was written from what was
55+
interesting in the source rather than from what the project is betting on, and
56+
nothing in the repository would have caught that -- only the author could
57+
Known-limitations: The plan describes a longer flow than internal/pipeline
58+
declares, and the two number their stages differently. The README follows the
59+
package; if the package is updated to the plan's flow, the diagrams and the
60+
reuse prose both need revisiting
61+
Next-safe-step: None required
62+
2863
Dev-Log: DL-20260802-035
2964
Date: 2026-08-02
3065
Status: TODOS backfilled; CHANGELOG audited and found complete
3166
Change-ID: CL-20260802-025
32-
Commit: pending
67+
Commit: 5337f43
3368
Request-or-TODO: User: "review the latest commits against the todo list and
3469
changelog and backfill todos and changes that werent documented"
3570
Goal: Make the completion ledger match what was actually done today

README.md

Lines changed: 68 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22

33
# CodeFlux
44

5-
**A coding agent that derives authority from what an action *is*
6-
never from what the model says it needs.**
5+
**An experimental coding agent that builds programs out of verified atoms.**
76

87
[![Main gate](https://github.com/monstercameron/codeflux/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/monstercameron/codeflux/actions/workflows/ci.yml?query=branch%3Amain)
98
[![Dev pass](https://github.com/monstercameron/codeflux/actions/workflows/dev-pass.yml/badge.svg?branch=dev)](https://github.com/monstercameron/codeflux/actions/workflows/dev-pass.yml?query=branch%3Adev)
@@ -13,39 +12,50 @@ never from what the model says it needs.**
1312
[![Platforms](https://img.shields.io/badge/platforms-windows%20%7C%20macos%20%7C%20linux-lightgrey.svg)](#supported-platforms)
1413
[![Status: prototype](https://img.shields.io/badge/status-prototype-orange.svg)](#project-status)
1514

16-
**[Quickstart](#quickstart) · [How it works](#how-it-works) · [What it will not do](#what-it-will-not-do) · [User guide](docs/using.md) · [Contributing](.github/CONTRIBUTING.md)**
15+
**[The idea](#the-idea) · [Quickstart](#quickstart) · [How a run produces code](#how-a-run-produces-code) · [What it will not do](#what-it-will-not-do) · [User guide](docs/using.md) · [Contributing](.github/CONTRIBUTING.md)**
1716

1817
</div>
1918

2019
---
2120

22-
## The argument
23-
24-
Most coding agents ask permission with a sentence the model wrote. You approve
25-
the sentence. Then something else runs.
26-
27-
CodeFlux asks with the **exact action identity**: the tool, its ordered
28-
arguments, and its declared effects. Approving `curl https://example.com` does
29-
not approve `curl https://elsewhere`, and it does not approve the same URL
30-
reached through a different tool. A denial is recorded against the *capability*,
31-
not against the one tool you happened to be shown — so a refused action is not
32-
quietly retried through a side door.
33-
34-
This matters because repository content is untrusted input. A poisoned `README`
35-
can absolutely persuade a model to *propose* something hostile. It cannot
36-
persuade CodeFlux that the proposal is authorized, because authority is never
37-
derived from anything a model or a file asserts. That is the whole design, and
38-
everything below follows from it.
39-
40-
The second commitment is narrower and just as load-bearing: **CodeFlux reports
41-
what it knows, what is ambiguous, and what it recommends as three separate
42-
things.** A forecast is a range, never a promise. An unreported price stays
43-
`unknown` and is never rendered as zero. A passing validation means the checks
44-
that ran passed — not that the change is correct. The execution graph explains
45-
what happened; it does not prove that what happened was right.
46-
47-
An agent that overstates its own evidence is worse than no agent, because you
48-
stop reading the diff.
21+
## The idea
22+
23+
Most coding agents write a program in one pass and then try to check it.
24+
CodeFlux builds one from the bottom up, out of **atoms**.
25+
26+
An atom is a reusable unit with a stable identity, a typed signature, a
27+
contract, documentation, declared effects, and the evidence that it works. It is
28+
larger than a helper function and smaller than a workflow. An atom reads nothing
29+
outside its arguments, so what it does is determined by what you pass it.
30+
31+
Atoms compose into **molecules**, molecules into control flow, control flow into
32+
a program. Each layer states what it must guarantee, and each guarantee names
33+
the pieces that discharge it.
34+
35+
**Correctness is the dimension being optimized.** Everything else is downstream
36+
of it. Cost is the interesting consequence: a verified atom is project capital,
37+
so the next task that needs it recalls it instead of rebuilding it. When an atom
38+
is reused, the eleven stages that established it collapse into one obligation —
39+
it must still pass the *new* run's tests, derived from the *new* contract. Reuse
40+
without that re-verification would just inherit the old blind spot.
41+
42+
That is also where the cost theory lives. If a program can be assembled from
43+
atoms that are already verified, assembly is a smaller job than authorship, and
44+
a cheaper model may be able to do it. Whether that holds is not settled.
45+
46+
**This is a bet, and it is written down as one.** Two of them, really:
47+
functional decomposition into pure atoms, and the claim that verified reuse
48+
compounds. The plan gives atom reuse an explicit kill criterion — if it produces
49+
no measurable improvement in defects, review time, or total cost, it goes. The
50+
prototype exists to find out.
51+
52+
Two habits hold the rest together. Authority comes from what an action *is*
53+
the tool, its ordered arguments, its declared effects — not from what the model
54+
says it needs, so a poisoned file can persuade a model to propose something but
55+
cannot make it authorized. And what is known, what is ambiguous, and what is
56+
recommended stay three separate things: a forecast is a range, an unreported
57+
price stays `unknown` rather than becoming zero, and a passing check means those
58+
checks passed and nothing more.
4959

5060
---
5161

@@ -102,7 +112,20 @@ Delete that directory and CodeFlux is gone. Your repository is not part of it.
102112

103113
---
104114

105-
## What it actually does differently
115+
## What it does differently
116+
117+
### Atoms are kept, and re-verified before they are reused
118+
119+
A verified atom carries its purpose, inputs, outputs, algorithm, and the
120+
metadata a later run needs to find it. Documentation is written *after* the
121+
tests, the fuzzing, and the mutation score, so it describes what the atom is
122+
known to do rather than what its author meant.
123+
124+
A later task looking for the same contract recalls that atom instead of writing
125+
a new one — but only if it still passes the tests the new run derived from the
126+
new contract. An atom that fails re-verification is rebuilt. Molecules are
127+
registered the same way, because a registry holding only leaf functions makes
128+
every run rebuild the joins.
106129

107130
### It never edits your checkout
108131

@@ -304,21 +327,20 @@ flowchart TD
304327
class GATE1,GATE2,GATE3,GATE4 gate
305328
```
306329

307-
Three things in that picture are load-bearing.
308-
309-
**Tests come before the thing they test, and cases come before the tests.**
310-
Stage 7 derives a ladder of inputs from the *signature* — straightforward,
311-
degenerate, edge, complex, wrong, pathological — before any test is written. A
312-
test written by reading an implementation checks what the code does; a case
313-
derived from the contract checks what the signature promised, and those two
314-
differ exactly where the bug is.
315-
316-
**Ordering within a phase is an argument, not a convention.** Anti-pattern
317-
detection sits *after* verification because a swallowed error is neither a
318-
compile error nor a test failure — no test written against current behavior
319-
would ever catch one. Optimization may only run *after* mutation scoring,
320-
because rewriting code guarded by tests nobody has shown can detect a defect is
321-
how a behavior change reaches delivery with a green suite behind it.
330+
Three details in that picture matter more than the rest.
331+
332+
**Cases come before tests, and tests come before code.** Stage 7 derives a
333+
ladder of inputs from the *signature* — straightforward, degenerate, edge,
334+
complex, wrong, pathological — before any test is written. A test written by
335+
reading an implementation checks what the code does; a case derived from the
336+
contract checks what the signature promised. They differ where the bug is.
337+
338+
**The order within a phase is deliberate.** Anti-pattern detection runs *after*
339+
verification, because a swallowed error is neither a compile error nor a test
340+
failure and no test written against current behavior would catch one.
341+
Optimization runs *after* mutation scoring, because rewriting code guarded by
342+
tests that have never been shown to detect a defect is how a behavior change
343+
ships with a green suite behind it.
322344
Documentation comes *last*, after fuzzing and mutation, so it describes what the
323345
atom is known to do rather than what its author meant.
324346

0 commit comments

Comments
 (0)