-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCHANGELOG
More file actions
7954 lines (7643 loc) · 461 KB
/
Copy pathCHANGELOG
File metadata and controls
7954 lines (7643 loc) · 461 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
CODEFLUX CHANGE LOG
Purpose
-------
This tracked ledger records completed commit-level outcomes. Every authorized
commit must add one focused entry and carry the matching Change-Log trailer.
Commit binding
--------------
An entry uses a stable Change-ID because a commit cannot contain its own final
hash. The commit message must include:
Change-Log: CL-YYYYMMDD-NNN
Resolve the final commit with:
git log --grep="Change-Log: CL-YYYYMMDD-NNN"
The Commit field carries the real hash, written AFTER the commit exists. Write
the entry with "Commit: pending", commit it, then fill the short hash in. That
edit stays in the working tree and is swept up by the next feature commit, so it
costs no commit of its own.
The newest entry therefore reads "pending" until the next feature lands, and the
last entry of a session stays pending until the next session. That is expected.
The Change-Log trailer is the binding that always works; the hash is a
convenience, and where the two disagree -- after a rebase, squash, or
cherry-pick, all of which change the hash -- the trailer is right.
One entry is a standing exception. CL-20260802-018 was swept into checkpoint
commit 92f1eed under the checkpoint's own message, so its commit carries no
Change-Log trailer at all and git log --grep="Change-Log: CL-20260802-018"
returns nothing. Rewriting a released commit to add the trailer is forbidden, so
this cannot be repaired. For that one entry the back-filled Commit field is the
sole working binding, and the entry itself repeats this note. The commit-msg
hook added by CL-20260802-041 prevents a second occurrence.
Entry fields
------------
Change-ID:
Commit:
Date:
Type:
Request-or-TODO:
Outcome:
Affected-behavior:
Compatibility-or-migration:
Verification:
Dev-Log:
Entries
-------
Change-ID: CL-20260820-001
Commit: pending
Date: 2026-08-20
Type: Phase-planning cascade: in-run hostile review, interface repair, and
planning-diagnostic corrections
Request-or-TODO: User instruction to fix the revised P0/P1/P2 list, run the
cascading planner on rung 151, and keep ascending the rungs
Outcome: Gives the phase cascade an independent hostile review that runs inside
the run, an interface blocked-repair path that satisfies the graph transition
rules, and eleven planning validators that state the rule they enforce rather
than only the observation that violated it. Two structured-output caps that
were smaller than the problem they bounded were raised, and two harness
timeouts that measured a configuration nobody ships were corrected.
Affected-behavior: RecordSealedPlanningPhaseReview has a production caller for
the first time, so a cascade run no longer pauses for a clearance nothing can
produce. Planning rejections now name the required relation kinds, the legal
role compositions, every missing source rather than the first, the divergence
point of a non-verbatim quote, and the located cause of an invalid interface
specification. Evidence fragments may reach 1000 characters and a semantics
response may carry 128 relations. The ladder uses the product request timeout
and a wait budget derived from the outer test deadline.
Compatibility-or-migration: No schema migration. The cascading planner remains
opt-in behind CODEFLUX_ADAPTIVE_PLANNER_STAGE_AUDIT; it was briefly made the
default in this session and reverted, see the development log.
Verification: Focused planning and coordinator tests pass, including new suites
for the interface correction, the requirement-bearing node, the review verdict
logic, the single-line framing property, the quote-divergence diagnostic, and
the relation-kind advice. go build and go vet are clean. The full coordinator
suite was diffed against HEAD earlier in the session at 19 failures before and
19 after, all pre-existing. Rung 151 was NOT completed and rung 145 was NOT
re-verified after the default was reverted.
Dev-Log: DL-20260820-001
Change-ID: CL-20260813-002
Commit: pending
Date: 2026-08-13
Type: CHECKPOINT -- explicitly authorized R144 control-plane checkpoint
Request-or-TODO: User instruction to stop R144, update the development log,
and commit all current code.
Outcome: Preserves the robust adaptive-planning interface matcher, typed
rejection retries, staged-audit routing, provider provenance validation,
reviewed-frontier recovery, and execution/final-review lifecycle corrections
developed while running R144.
Affected-behavior: Zero-input CLI acceptance, heterogeneous multiline outputs,
explicit no-stderr policy, phase-specific prompt auditing, and provider
model/effort attribution now fail closed at their authority boundaries.
Compatibility-or-migration: No schema migration. Historical composite effort
values remain readable; new planning turns require the canonical provider
model and effort tuple. R144 itself is intentionally not declared complete.
Verification: Planning and storage focused tests passed. The final coordinator
focus run is red at TestAcceptanceCompatibilityExposesAmbiguousSurfaces:
its ambiguity fixture expected matching surfaces but produced zero. The user
directed work to stop, so this is committed as an explicitly red checkpoint;
the ignored R144 artifact is not source authority or committed.
Dev-Log: DL-20260813-005
Change-ID: CL-20260813-001
Commit: adab24d
Date: 2026-08-13
Type: CHECKPOINT -- explicitly authorized collapse of the current integrated work
Request-or-TODO: User instruction: "go ahead and remove all the older artifacts" after authorizing the complete current source state as a checkpoint.
Outcome: Preserves the integrated adaptive-planning, semantic/evidence soundness, lifecycle/finalization, provider-accounting, and exact stage-correction work. Historical generated artifacts were removed while the latest R101 ladder artifact was retained outside version control.
Affected-behavior: Planning frontiers and provider evidence are durably bound; candidate/report tree identity and lifecycle recovery are stricter; verifier evidence is more truthful; immutable exact-tree stage evaluations and root-only smart send-backs can avoid replaying unrelated stages; certified candidates reject further autonomous mutation.
Compatibility-or-migration: Adds SQLite migrations 48 through 55. Existing databases migrate forward through the embedded ordered catalog. No generated artifact or executable is committed.
Verification: Pending final checkpoint verification: generation checks, focused pipeline/storage/coordinator suites, repository compile/vet, diff hygiene, and staged-content inspection.
Dev-Log: DL-20260813-002
Change-ID: CL-20260810-006
Commit: deliberately not back-filled -- see Outcome
Date: 2026-08-10
Type: Ledger maintenance
Request-or-TODO: User instruction: "the changelog too".
Outcome: Releases the back-filled commit hash for CL-20260810-005, which had
been left in the working tree.
Affected-behavior: None. Ledger only.
Compatibility-or-migration: None.
Verification: The hash reads 684b762 and `git log --grep="Change-Log:
CL-20260810-005"` resolves to that commit, so the field and the trailer agree.
Note on this entry's own Commit field: the ledger's design has a back-fill ride
along with the next feature commit precisely so it never costs a commit of its
own. Committing one on request inverts that, and doing it again for THIS entry
would not terminate -- every back-fill commit needs a further back-fill. The
field is therefore left unfilled on purpose rather than reading "pending",
which would suggest somebody still owes it. The Change-Log trailer is the
authoritative binding, as the preamble says, and it is present.
Dev-Log: DL-20260810-049
Change-ID: CL-20260810-005
Commit: 684b762
Date: 2026-08-10
Type: CHECKPOINT -- explicitly requested collapse of another lane's work
Request-or-TODO: User instruction: "go again", then "bypass" when the lint gate
was about to be consulted.
Outcome: 47 files committed in one commit. They are NOT one feature and none
belong to the lane writing this entry: adversarial review, convergence,
execution, narration, numeric safety, obligations, outstanding work,
performance, planning, the cases/delivery/mutation/structure stages, atom
documentation asking, planned layout, preseeded and run lessons, and the
executor's file and patch tools.
Affected-behavior: Not separable per feature at this revision.
Compatibility-or-migration: No migration in this batch.
Verification: go build ./... is clean. THE LINT GATE WAS NOT RUN for this
revision: the user answered "bypass" when it was about to be consulted, so
this entry cannot state what it would have reported. As of the previous
checkpoint (CL-20260810-003) it reported six ST1005 in
internal/codexmodel/model.go and two U1000 unused functions in
internal/coordinator, and internal/transport failed two AUDIT-016a tests;
none of those were addressed by this lane, and this batch touches
internal/executor and internal/coordinator, so the count may have moved in
either direction unobserved.
No test suite was run for this revision either.
Dev-Log: DL-20260810-048
Change-ID: CL-20260810-004
Commit: pending
Date: 2026-08-10
Type: CHECKPOINT -- explicitly requested commit of all current code
Request-or-TODO: User instruction: "commit all the fucking code"; completed
PIPE-139y through PIPE-139by.
Outcome: Checkpoint the accumulated ladder-pipeline refinements through the
retained Rung 32 control, including deterministic tool boundaries, adaptive
planning and routing, contextual preventive memories, semantic verification,
mutation and performance evidence, planned layout enforcement, and their
focused regressions.
Affected-behavior: Codeflux more accurately routes compact semantic work,
rejects malformed or unsafe edits transactionally, keeps repair evidence
monotonic, selects relevant memories, and avoids several false verification
debts observed while ascending Rungs 19 through 32.
Compatibility-or-migration: No database migration. Preventive-memory pack and
classifier versions advance in place; retained ladder databases and reports
remain untouched under `.artifacts/`.
Verification: Pending checkpoint verification; the commit will record the
exact test, vet, and diff-hygiene results.
Dev-Log: DL-20260810-047; detailed feature records DL-20260810-004 through
DL-20260810-046.
Change-ID: CL-20260810-003
Commit: 8704bcf
Date: 2026-08-10
Type: CHECKPOINT -- explicitly requested collapse of another lane's work
Request-or-TODO: User instruction: "go again", continuing "commit everything".
Outcome: 15 files committed in one commit. They are NOT one feature and none
belong to the lane writing this entry: adaptive routing observation,
convergence, outstanding work, the mutation stage and its tests, stage
routing, planned layout, preseeded lessons, run lessons, and the semantic
frontier test.
Affected-behavior: Not separable per feature at this revision.
Compatibility-or-migration: No migration in this batch.
Verification: go build ./... is clean. go test ./web/... and ./internal/pipeline/
pass. FAILING AT THIS REVISION, knowingly committed: the same eight as
CL-20260810-002 -- six ST1005 in internal/codexmodel/model.go, two U1000
unused functions in internal/coordinator -- plus the two internal/transport
AUDIT-016a tests. Unchanged for a fourth consecutive checkpoint.
go test ./internal/coordinator/ was NOT run.
Dev-Log: DL-20260810-003
Change-ID: CL-20260810-002
Commit: 5b9c643
Date: 2026-08-10
Type: CHECKPOINT -- explicitly requested collapse of another lane's work
Request-or-TODO: User instruction: "go again", continuing "commit everything".
Outcome: 37 files committed in one commit. They are NOT one feature and none
belong to the lane writing this entry: convergence, execution, planning,
registration and structure stages, declared and semantic atom contracts,
documentation derivation, discard refinement, planned layout, frontier tests,
the inspection repository, and the codexmodel and openaimodel packages.
Affected-behavior: Not separable per feature at this revision.
Compatibility-or-migration: No migration in this batch.
Verification: go build ./... is clean. go test ./web/..., ./internal/codexmodel/
and ./internal/openaimodel/ pass. FAILING AT THIS REVISION, knowingly
committed:
- internal/transport, two tests (AUDIT-016a), unchanged since
CL-20260809-011.
- staticcheck: six ST1005 in internal/codexmodel/model.go and two U1000
unused functions in internal/coordinator. Unchanged for a third
consecutive checkpoint.
The gofmt stage of the gate was cleared separately in CL-20260810-001, so the
eight failures above are now the whole of what the gate reports rather than
what it reports first.
go test ./internal/coordinator/ was NOT run.
Dev-Log: DL-20260810-002
Change-ID: CL-20260810-001
Commit: cf0c8d1
Date: 2026-08-10
Type: Fix -- restore the gofmt gate
Request-or-TODO: Repository lint gate
Outcome: internal/atomdoc/semantic_contract_test.go and
internal/storage/atom_semantic_contract_repository_test.go are gofmt-clean.
Affected-behavior: None. Whitespace alignment inside composite literals only.
Both files were released unformatted in the checkpoint CL-20260809-011, which
is how they reached a state the gate refuses; the gofmt check runs ahead of
staticcheck, so they were also masking whatever staticcheck would say next.
Compatibility-or-migration: None.
Verification: gofmt -l reports nothing for internal/atomdoc and internal/storage.
go vet passes for both packages. The lint gate now proceeds past gofmt to the
eight staticcheck failures it was already reporting before the checkpoints.
Dev-Log: DL-20260810-001
Change-ID: CL-20260809-023
Commit: aa32d18
Date: 2026-08-09
Type: CHECKPOINT -- explicitly requested collapse of another lane's work
Request-or-TODO: User instruction: "go again", continuing "commit everything".
Outcome: 19 files committed in one commit. They are NOT one feature and none
belong to the lane writing this entry: acceptance overfit detection, cohesion,
narration, completeness, registration and structure stages, edit scope, the
inspection repository, and a new codeflux-dev run-report command.
Affected-behavior: Not separable per feature. Unlike the two checkpoints before
it, this batch DOES carry a DEVLOG entry from its authors
(DL-20260809-030), so the work is described where it should be.
Compatibility-or-migration: No migration in this batch.
Verification: go build ./... is clean. go test ./web/... and ./internal/storage/
pass. FAILING AT THIS REVISION, knowingly committed:
- internal/transport, two tests (AUDIT-016a), unchanged since
CL-20260809-011.
- staticcheck: six ST1005 in internal/codexmodel/model.go and the two U1000
unused functions in internal/coordinator. Unchanged from CL-20260809-019 --
the count stopped growing this round but nothing was cleared.
go test ./internal/coordinator/ was NOT run.
Dev-Log: DL-20260809-032
Change-ID: CL-20260809-022
Commit: pending
Date: 2026-08-09
Type: DOCUMENTATION -- asset directory rename
Request-or-TODO: User instruction to give every Flux repository the same layout:
"for each flux project readme like you did for codeflux add the main image to
the readme and store the other assets in a design/branding folder".
Outcome: design/brand renamed to design/branding, and the README's image path
updated to match. The other four Flux repositories were given the same
design/branding layout in their own commits, so the five now agree.
Affected-behavior: None. Static assets and one markdown path.
Compatibility-or-migration: A raw.githubusercontent link to the old design/brand
path stops resolving. Nothing in this repository referenced it, and the
README's own reference moved in the same commit.
Verification: git mv preserves history; the README's single asset path was
updated and confirmed to point at a file that exists.
Change-ID: CL-20260809-021
Commit: pending
Date: 2026-08-09
Type: DOCUMENTATION -- README factual audit against the code
Request-or-TODO: User instruction: "the model escalation isnt a stall its a smart
router ffs, bro read the code and fix all the outdated facts in the readme".
Outcome: README.md. Escalation is described as what agent_convergence.go
actually implements: a router that counts repetition by failure fingerprint
rather than attempts, keeps a per-failure tally so an unrelated failure between
two identical ones cannot erase the evidence, and applies a different rule per
gate class -- atom-documentation and completeness never escalate because they
ask for text the run already has; assembly, adversarial, integration-tests and
acceptance escalate on the second failure because they are properties that can
be lost; deterministic-refinement and path-coverage escalate on the second
because each is a whole repair loop; research gates never trigger alone.
Per-rung budgets, provider-health gating, bounded refunds for machinery
failures, per-family capability memory, and alternation tracking are documented
because each exists to fix a real run. The word "stall" is gone from the
section, the diagram edges, and the medium-effort rationale.
Project status counts corrected: milestones 00-23 hold 1,862 closed tasks, not
1,846; Milestone 24 is about 60% rather than "roughly half"; Milestone 25 has
opened and was unmentioned; the 2,375 closed / 352 open totals are stated.
Affected-behavior: None. Documentation only.
Compatibility-or-migration: None.
Verification: A claim-by-claim audit rather than a spot fix. Checked against the
code and matching: the 41 stage constants, the four DefaultLadder rungs, the
five pipeline States, the four ModelBearing gates, the eight gate names cited
in the new escalation table, the three documented CLI commands and the
--no-browser flag, the three data directories in internal/release, and the CI
platform matrix. Code fences balanced at 16.
Change-ID: CL-20260809-020
Commit: pending
Date: 2026-08-09
Type: DOCUMENTATION -- README pipeline, ladder, and worktree removal
Request-or-TODO: User instructions, in order: the README text and mermaid
diagrams were not updated with the latest pipeline stages and enhanced
workflows; "we arent working with worktrees so remove those references"; and
"model ladder needs updating".
Outcome: README.md only, on three fronts.
Pipeline: the flow is 41 stages, not 37. Both pipeline diagrams and the phase
labels now carry every stage by name, and the four appended stages -- 38
acceptance-oracle, 39 skip-audit, 40 atom-registration, 41
molecule-registration -- are documented in a table with a diagram dashing each
back to the phase it conceptually belongs to, since they were appended rather
than renumbered (PIPE-045 owns the renumbering). "The other 36 stages" is now
40. A paragraph was added for the structured-planning layout gate at stages 3
and 4, closed by LAD-001.
Ladder: the default ladder is luna:low, terra:low, sol:low, sol:high -- three
models climbing capability at low effort before effort is raised on the
frontier model. The README described luna:low, luna:max, sol:low, sol:high and
asserted the opposite rationale, that effort is exhausted on the cheap model
first. Diagram, table, and reasoning replaced.
Worktrees: every reference removed on instruction. The isolation section is
retitled and now rests on the review gate rather than on a sandbox, and carries
a note that the shipped launcher still creates a worktree per task.
Affected-behavior: None. Documentation only.
Compatibility-or-migration: None.
Verification: Stage names and numbers read from internal/pipeline/stages.go and
phase bounds from internal/pipeline/phases.go, not restated from memory. Ladder
rungs read from pipeline.DefaultLadder and DefaultApprovalRungs, models from
KnownModels. Code fences balanced at 16; four mermaid blocks intact.
Change-ID: CL-20260809-019
Commit: 6722b63
Date: 2026-08-09
Type: CHECKPOINT -- explicitly requested collapse of another lane's work
Request-or-TODO: User instruction: "go again", continuing "commit everything".
Outcome: 17 files committed in one commit. They are NOT one feature and none
belong to the lane writing this entry: narration, outstanding work,
completeness, mutation, registration and structure stages, patch context, run
lessons, the codexmodel package, and a new test-entrypoint preservation test.
Affected-behavior: Not separable per feature, and not described by its authors:
this batch, like CL-20260809-016, arrived with no CHANGELOG or DEVLOG entries
of its own.
Compatibility-or-migration: No migration in this batch.
Verification: go build ./... is clean. go test ./web/... and
./internal/codexmodel/ pass. FAILING AT THIS REVISION, knowingly committed:
- internal/transport, two tests (AUDIT-016a), unchanged since
CL-20260809-011.
- staticcheck: SIX ST1005 capitalized error strings in
internal/codexmodel/model.go, up from five at CL-20260809-016, plus the
two long-standing U1000 unused functions in internal/coordinator.
The lint gate has now failed at four consecutive checkpoints and the count has
grown rather than shrunk. That is recorded here because a gate bypassed
repeatedly stops being a gate, and the four --no-verify commits that carried
these revisions were authorized one at a time, not as a standing policy.
go test ./internal/coordinator/ was NOT run.
Dev-Log: DL-20260809-026
Change-ID: CL-20260809-018
Commit: pending
Date: 2026-08-09
Type: DOCUMENTATION -- README alignment and an honesty correction
Request-or-TODO: User instruction: "re-review the recent changes to the agentic
coding engine and rewrite the readme and the plans with my goals to better
align the readme for codeflux", then, after review, the decision that atoms
remain the headline identity, and finally "actually dont touch plan.md".
Outcome: README.md only. The two bets are now stated as separable claims --
decomposition, and reuse -- with the dependency between them named and a kill
criterion for each. The reuse section carries an explicit "built, not
demonstrated" note citing LAD-002, and Project status gains a table saying
which bet is exercised and which has never fired. The stage arithmetic is
corrected: a run carries 41 stages and reuse excuses 11 of them, where the
previous text implied eleven stages were the whole of establishing an atom.
Affected-behavior: None. Documentation only.
Compatibility-or-migration: None. docs/plan.md was deliberately left untouched on
instruction; the README therefore leads with an emphasis the plan's Section 2
does not yet share, and that divergence is known rather than accidental.
Verification: No code changed, so the pre-commit gate skips format, lint and
tests by design. Stage count checked against TODOS.md, where "all 41 stages"
is the recurring figure; the 11-stage reuse saving checked against plan.md,
which excuses stages 16 through 26. The LAD-002 quotations are taken verbatim
from that ticket.
Change-ID: CL-20260809-017
Commit: pending
Date: 2026-08-09
Type: DOCUMENTATION and ASSETS -- README, brand images, link casing
Request-or-TODO: User instruction: "update the readme and repo with the codeflux
image assets", followed by "also change the repo name safely to CodeFlux".
Outcome: Added design/brand/ with four web-sized CodeFlux brand assets (poster,
mark, logo lockup, social card) derived from the commissioned artwork, and put
the poster at the head of README.md. Rewrote every https://github.com/
monstercameron/codeflux link to the CodeFlux casing the repository is being
renamed to, across README.md, docs/using.md, docs/new_features.md and the five
files under .github/.
Affected-behavior: None. Documentation and static images only -- no code, no
build inputs, no schema. The Go module path is codeflux.dev/codeflux, a vanity
path with no GitHub component, so the rename cannot affect imports.
Compatibility-or-migration: GitHub serves a permanent redirect from the old
repository name, so existing clones, remotes and third-party links keep
working; the rewritten links are for correctness, not to avoid breakage.
DEVLOG was deliberately NOT rewritten -- it is a historical ledger and the old
name is what those entries were written against.
Verification: Documentation only; no build or test surface. Asset paths checked
against the committed tree. The CHANGELOG hash backfill for CL-20260809-016 is
swept up here per the convention above, together with another lane's pending
DEVLOG entries, which this commit does not otherwise touch.
Change-ID: CL-20260809-016
Commit: 0852878
Date: 2026-08-09
Type: CHECKPOINT -- explicitly requested collapse of another lane's work
Request-or-TODO: User instruction: "go again", continuing "commit everything".
Labelled as a checkpoint here and in the subject as AGENTS.md requires,
including what is failing at this revision.
Outcome: 40 files committed in one commit. They are NOT one feature and none
belong to the lane writing this entry: they are the ladder and pipeline lane's
next increment -- adversarial exit parsing and grammar, cohesion, contract
assurance and evidence-breadth checks, numeric safety, routing outcome
analysis, preseeded lessons, skip-audit changes, scheduler changes, and a new
internal/codexmodel package.
Affected-behavior: Not separable per feature at this revision, and NOT DESCRIBED
BY ITS AUTHORS: unlike CL-20260809-014, this batch arrived with no CHANGELOG
or DEVLOG entries of its own. What each change does is recoverable only from
the diff and from the TODO identifiers in the test names.
Compatibility-or-migration: No new migration in this batch. docs/plan.md and
README.md changed alongside the code.
Verification: go build ./... is clean. go test ./web/... and ./internal/pipeline/
pass. FAILING AT THIS REVISION, knowingly committed:
- internal/transport TestGeneratedClientsExecuteSyntheticJourney and
TestOpeningAWorkspaceIsRefusedRatherThanFaked (AUDIT-016a), unchanged
since CL-20260809-011.
- staticcheck: five ST1005 capitalized error strings in the new
internal/codexmodel/model.go, plus the two long-standing U1000 unused
functions in internal/coordinator. The repository lint gate does not pass
at this revision.
go test ./internal/coordinator/ was NOT run; its ladder suites are long
running and belong to the lane that owns them.
Dev-Log: DL-20260809-023
Change-ID: CL-20260809-015
Commit: pending
Date: 2026-08-09
Type: DOCUMENTATION -- README only
Request-or-TODO: User instruction on the earlcameron.com portfolio: give each
Flux project a dedicated page, then "refine the gh readme to both point to the
page and readjust the copy to match the page a little more".
Outcome: README.md now leads with the brand line from CodeFlux's own poster art
("Verified atoms. Better software."), restates the one-sentence description in
the same words the portfolio page uses, and links the case study at
https://www.earlcameron.com/projects/codeflux. No other file changed; the
CHANGELOG hash backfill for CL-20260809-014 is swept up here as the convention
above prescribes.
Affected-behavior: None. Documentation only -- no code, no build, no schema.
Compatibility-or-migration: None.
Verification: Text change only; no build or test surface. The linked page is
served by the portfolio's dev branch and reaches the public site when that
branch is promoted, which is the site owner's call.
Change-ID: CL-20260809-014
Commit: 734b31c
Date: 2026-08-09
Type: CHECKPOINT -- explicitly requested collapse of another lane's work
Request-or-TODO: User instruction: "go again", continuing "commit everything".
Labelled as a checkpoint here and in the subject because AGENTS.md requires
it, including what is failing at this revision.
Outcome: 45 files committed in one commit. They are NOT one feature, and none
of them belong to the lane writing this entry. The tree held the ladder and
pipeline lane's next increment -- LAD-077 verification decision telemetry,
LAD-078 adaptive agent routing and performance measurement, project lesson
keys, and migrations 000046 and 000047 -- together with the CHANGELOG and
DEVLOG entries that lane had already written for it (CL-20260809-012,
DL-20260809-017 through DL-20260809-019).
Affected-behavior: Not separable per feature at this revision. That lane's own
entries describe the work; this entry records only that it was released here
and by whom.
Compatibility-or-migration: Adds migrations 000046_verification_decision_telemetry
and 000047_project_lesson_key_observations. A database opened by this revision
migrates forward; an older coordinator binary refuses it afterwards, which is
the intended failure.
Verification: go build ./... is clean. go test ./web/... passes. FAILING AT THIS
REVISION, knowingly committed:
- internal/transport TestGeneratedClientsExecuteSyntheticJourney and
TestOpeningAWorkspaceIsRefusedRatherThanFaked, from the in-flight
OpenWorkspaceRequest.project_id work (AUDIT-016a). Unchanged since
CL-20260809-011.
- staticcheck U1000 on internal/coordinator/agent_stage_checks.go:465 and
internal/coordinator/engine_end_to_end_test.go:272, dead code in that
lane's own files, so the repository lint gate does not pass here.
go test ./internal/coordinator/ was NOT run: its ladder suites are long
running and their state belongs to the lane that owns them.
Dev-Log: DL-20260809-021
Change-ID: CL-20260809-013
Commit: fe9d4ea
Date: 2026-08-09
Type: Fix -- an atom declared a required field inapplicable without saying why
Request-or-TODO: FE-001 follow-up; repository lint gate
Outcome: ResolveRepositoryRouteScope states its precondition instead of
declaring it none.
Affected-behavior: The atom's Preconditions field read "None beyond a readable
database connection", which is a None with a restatement of the schema rather
than a reason, and the repository's own atom-documentation check refused it.
The field now says what is actually required and what is not: the resolver
opens no transaction, writes nothing, and does not depend on a prior
bootstrap. That is a stronger claim than "none" and is the one a caller needs.
Compatibility-or-migration: None. Documentation comment only; no behavior, no
signature, no stored value changed.
Verification: codeflux-dev lint no longer reports this atom. go test
./internal/storage/ passes.
Dev-Log: DL-20260809-020
Change-ID: CL-20260809-012
Commit: pending
Date: 2026-08-09
Type: FEATURE -- decision and verification telemetry
Request-or-TODO: LAD-077; retain richer skip, repair, escalation, evidence,
mutation, reuse-refusal, reproducibility, and claim-coverage data, then
restart the ladder from rung 1 without touching prior roots
Outcome: Pipeline and attempt decisions are queryable as typed SQLite facts;
the final verification-coverage view maps claims to method, source, strength,
independence, rationale, model, evidence, reproducibility, and duration.
Fresh rung 1 passes with its complete decision lineage retained.
Affected-behavior: Send-backs retain structured frontiers and repair categories;
mutation retains operator and viability details; acceptance discrimination
retains its baseline facts; recall retains per-candidate refusal taxonomy;
inspect-db accepts a bounded caller-selected limit through 500.
Compatibility-or-migration: Schema advances from 45 to 46. Historical rows
migrate with explicit unknown/default telemetry and are never retroactively
assigned provenance or assurance they did not record.
Verification: Focused LAD-077, MEM-002, PIPE-020, migration, and inspect-db
tests pass; coordinator/storage/CLI vet passes. Rung-1 task
`tsk_019fe79b-5599-7263-a52a-48f730365a57` passed 41/41 stages plus external
build/run/adversarial assertions in 57.77s; retained inspection reports 46
decisions, 50 claim-evidence rows, and two transitions without truncation.
Dev-Log: DL-20260809-018
Change-ID: CL-20260809-011
Commit: 112dc01
Date: 2026-08-09
Type: CHECKPOINT -- explicitly requested collapse of concurrent lane work
Request-or-TODO: User instruction: "seeing >200 changed files, commit
everything". This entry exists because AGENTS.md requires a checkpoint commit
to be labelled as one, in its subject and here, including what is failing at
this revision.
Outcome: 278 files committed in one commit. They are NOT one feature. The
working tree held the concurrent, uncommitted work of several lanes -- ladder
rungs and their retained fixtures, atom semantic contracts and the
atom_implementations store, agent pipeline stages, fuzz targets, transport and
proto surface changes, docs, and the browser client remainder of the FE series
-- and the user asked for all of it to land rather than wait for each lane to
commit its own.
Affected-behavior: Not separable per lane at this revision. The individually
reviewable parts of this session's own work landed before this commit as
CL-20260809-006 through CL-20260809-010; everything after them is here.
Compatibility-or-migration: Includes migration 000044_atom_implementations.sql
and the regenerated protobuf artifacts. Databases at schema 43 migrate
forward on open; a coordinator binary older than this revision refuses a
database that has already migrated, which is the intended failure.
Verification: go build ./... passes. go test ./web/..., ./internal/storage/
pass. FAILING AT THIS REVISION, knowingly committed as part of the requested
checkpoint:
- internal/transport TestGeneratedClientsExecuteSyntheticJourney and
TestOpeningAWorkspaceIsRefusedRatherThanFaked, both from the in-flight
OpenWorkspaceRequest.project_id work (AUDIT-016a).
- staticcheck U1000 on internal/coordinator/agent_stage_checks.go:465
(checkNonFunctional) and internal/coordinator/engine_end_to_end_test.go:272
(startEscalatingEngineFixture), both dead code in another lane's in-flight
files. The repository lint gate therefore does not pass at this revision.
go test ./internal/coordinator/ was NOT run: its ladder suites take longer
than this commit could reasonably wait on, and their state belongs to the lane
that owns them.
Dev-Log: DL-20260809-016
Change-ID: CL-20260809-010
Commit: 18470b8
Date: 2026-08-09
Type: Documentation -- close the FE series and record what each fix actually was
Request-or-TODO: FE-001 through FE-011a
Outcome: TODOS.md records the thirteen FE tickets as closed, each with the
mechanism that made the defect possible rather than a restatement of the
ticket.
Affected-behavior: None. Task ledger only.
Compatibility-or-migration: None.
Verification: Read against the commits it describes; every closure names the
file it changed and the test that pins it.
Dev-Log: DL-20260809-013
Change-ID: CL-20260809-009
Commit: 53d1b11
Date: 2026-08-09
Type: Feature -- the atom surface shows an atom's own code and says what it is
Request-or-TODO: FE-006 follow-up (user requests: "the atom code and metadata
doesnt exist", "for the atom code add a copy to keybpard button", "you are
showing their ids instead of their names in the list")
Outcome: The atom detail pane renders the declaration source with a control that
copies it, distinguishes a declared name from no name at all, and carries the
provenance a registered atom has instead of a file and a line.
Affected-behavior: A registered atom has no declaration in the checkout, so the
ordinary "where it lives" answer was three empty labels. The pane now shows
the repository revision the comment was read at, how it was authored, and the
hashes that make it addressable. A row whose atom was never named is badged
"Declared name" when it is titled by its declaration and "Unnamed" when even
that is unknown; neither is allowed to read as a name the atom was given,
because the declared name belongs to the revision -- the same atom is declared
resultText in one program and formatDistance in another. The code block gained
a copy control, because selecting numbered lines by hand drags the line
numbers with them.
Compatibility-or-migration: None. Rendering only; the fields consumed here are
supplied by the client and default to empty.
Verification: go test ./web/frontend/... passes. The pane, the badge, the row
titles and the copy control were each driven in a real browser against a live
ladder database; the copy control's label was observed flipping to "Copied".
Dev-Log: DL-20260809-012
Change-ID: CL-20260809-008
Commit: bd56b20
Date: 2026-08-09
Type: Fix -- a long value painted over its neighbours
Request-or-TODO: FE route sweep (found by screenshot, not by markup)
Outcome: Each readout in the application bar's instrument strip carries a width
ceiling in characters, so no single value can consume the row.
Affected-behavior: The strip's items had a floor -- min-width: 0, which lets a
flex item shrink -- and no ceiling. Shrinking only happens when the row runs
out of room and this row never did, because the strip is free-width: a long
value grew its group instead, and the workspace readout was drawn straight
across the model and spend groups, clipping them to "mai", "98/" and
"of $50.00". The full value stays on the control's accessible name and in the
panel it opens.
Compatibility-or-migration: None. Presentation only.
Verification: Two tests in web/frontend/shell: the workspace readout no longer
folds to the same class as the branch beside it, and every readout kind
declares a ceiling. Both were confirmed to fail with the ceiling removed.
Dev-Log: DL-20260809-011
Change-ID: CL-20260809-007
Commit: 210eeb2
Date: 2026-08-09
Type: Fix -- the header reported readings it did not have
Request-or-TODO: FE route sweep
Outcome: An instrument group in the application bar is drawn only when at least
one of its instruments actually reports something.
Affected-behavior: /projects, /repositories, /settings and /code each drew
"MODEL - UNKNOWN / Unknown - Unknown", and on the settings page that sat
inches above the real configured model, one page contradicting itself. Two
separate defects produced it. The group was gated on TaskState alone, which is
non-empty on routes carrying no task; and the gate was the `hidden` attribute,
which cannot hide an element whose class sets `display: flex`, because
`hidden` is a user-agent rule and the class is an author rule. A node that
must not appear is now not built.
Compatibility-or-migration: None. Presentation only; no request, response, or
stored value changed.
Verification: Four tests in web/frontend/shell covering an unmeasured group, a
measured one, a half-measured one, and a route with no task at all. Each was
confirmed to fail with the gate removed.
Dev-Log: DL-20260809-010
Change-ID: CL-20260809-006
Commit: 0f435f5
Date: 2026-08-09
Type: Fix -- the code surface described the wrong subject
Request-or-TODO: FE-006 follow-up (user request: "the code page needs to only
show code produced for the specific project id")
Outcome: /code now lists the files the PROJECT produced, read from artifacts and
scoped by project_id, instead of the canonical checkout at git HEAD.
Affected-behavior: On an agent-run project the page listed the seed fixture and
nothing else -- carryOut never calls AcceptTaskChange, so no generated file is
committed to any branch, every task branch sits on the seed revision, and the
worktree holding the program is deleted when the run ends. A live 250-rung
project rendered "2 files" while it had produced 2,197. It now renders 110
files and 49 documented atoms over the produced tree, one entry per path at
its newest content, with declarations and atom counts parsed from the
artifact. No revision is reported, because these files were never committed at
one; reporting the checkout's revision attached a git identity to content git
has never seen.
Compatibility-or-migration: No schema or API change. ListCodeFiles and
ReadCodeFile keep their request and response shapes; only the store they read
changed. CodeFilePage.Revision is now empty for produced listings, which
clients already render as absent.
Verification: go build ./... and go test ./web/... pass. Driven in a real
browser against a live ladder database: the tree, the per-file atom badges,
and a file opened to its numbered source were each confirmed by screenshot.
Dev-Log: DL-20260809-009
Change-ID: CL-20260809-005
Commit: pending
Date: 2026-08-09
Type: Test correction -- expression-language acceptance oracle
Request-or-TODO: Continue ascending the retained program-generation ladder
Outcome: Corrected rung 47's expected result from 25 to 20 so its oracle agrees
with the stated usual arithmetic semantics of `max(3 * 3 + abs(-4), 20)`.
Affected-behavior: The ladder now rewards a conventional expression evaluator
instead of repeatedly asking correct implementations to invent nonstandard
arithmetic behavior solely for one fixture.
Compatibility-or-migration: Test-only correction; no production API, runtime
schema, or retained database migration.
Verification: Focused ladder harness and instruction/acceptance checks passed.
Retained replay `r47-oracle-fix-2`, task
`tsk_019fe744-10f6-7dc6-95c4-ec7b96de0f78`, passed 41/41 pipeline stages and
all external build/run/adversarial assertions in 751.20s overall.
Dev-Log: DL-20260809-008
Change-ID: CL-20260809-004
Commit: pending
Date: 2026-08-09
Type: Fix -- actionable and reproducible fuzz refinement
Request-or-TODO: LAD-076
Outcome: Go fuzz execution now bounds worker fan-out, discriminates transient
worker exits from reproducible saved-corpus failures, retains useful root
diagnostics, and feeds stable findings back into model refinement before the
attempt ceiling. Target-creation and finding-repair budgets are independent.
Affected-behavior: A real fuzz panic can be repaired by a later implementation
attempt instead of first appearing after the model loop. A transient nonzero
fuzz process must complete a full isolated single-worker replay before it is
treated as recovered. The final atom-fuzz stage remains mandatory and runs
independently. Coverage guidance now scopes one unreachable directive to one
specific branch.
Compatibility-or-migration: No schema or API change. Existing retained tasks,
corpora, logs, and SQLite rows remain unchanged.
Verification: Focused fuzz, convergence, unreachable-directive, scheduler, and
pipeline cohorts pass; coordinator and pipeline vet pass. Retained rung 45
replay `r45-fuzz-feedback-2`, task
`tsk_019fe724-b019-7b12-9de6-0e64bc6175ce`, passed all 41 stages and external
assertions in 440.59s after five attempts; atom-fuzz, path coverage,
repetition, mutation, and non-functional gates all held.
Dev-Log: DL-20260809-007
Change-ID: CL-20260809-003
Commit: pending
Date: 2026-08-09
Type: Feature -- atom behavioral contracts
Request-or-TODO: LAD-075
Outcome: Added schema-v2 atom semantic contracts containing primitive facts,
mechanically derived composition properties, and verification obligations,
separately from schema-v1 retrieval documentation.
Affected-behavior: New atom registrations bind a canonical semantic contract
to the exact sanitized implementation before becoming visible. Unknown or
contradictory facts fail closed, and clients can inspect fact and derived
JSON independently. Historical exact implementations are backfilled
conservatively on the registry write path.
Compatibility-or-migration: Migration 000045 is additive and immutable. It
does not reinterpret schema-v1 comments or delete historical rows. The
product response adds an optional semantic-contract field.
Verification: Focused atomdoc, real-SQLite storage, coordinator registration,
transport, safe-inspection, generation, migration, and vet checks pass.
Retained rung 43 passed all 41 stages and external assertions in 339.01s and
populated schema-v2 rows for both historical and newly registered exact
implementations. The repository-wide suite still contains independently
failing pre-existing cohorts and a ten-minute coordinator timeout; it is not
represented as green by this change.
Dev-Log: DL-20260809-006
Change-ID: CL-20260809-002
Commit: pending
Date: 2026-08-09
Type: Feature/Fix -- durable atom source and workflow-backed preventive memory
Request-or-TODO: LAD-069, LAD-070, LAD-071, LAD-072, LAD-073, LAD-074
Outcome: Admitted atom revisions now retain their exact implementation and
friendly declaration name in immutable SQLite rows. Preventive memories are
automatically checked against durable failed stage, intermediate attempt
send-back, or tool records, unsupported
claims are quarantined, duplicates and context are bounded, and unknown gate
prose is never promoted into memory. Graph dependency wording no longer
triggers software-change approval, failed plan binding stops before provider
work, and deep command checks receive executor-enforced process-tree deadlines.
Affected-behavior: Atom inspection no longer depends on a surviving task
worktree. Later generation sees at most four exact, workflow-supported
preventive constraints. Ordinary dependency-graph tasks remain routine, and
fuzz/repetition/non-functional checks cannot hang on descendant-held pipes.
Risk phrases use word boundaries, preventing `api` inside ordinary words
such as `capital` from requiring an unrelated approval.
Assembly duration now measures the actual final build rather than model
refinement time that happened earlier in the attempt.
Compatibility-or-migration: Migration 000044 is additive and reconciles an
admitted historical implementation only on exact normalized input identity
and contract hash. Existing unverified memory remains retained but is
quarantined from model context rather than deleted.
Verification: Focused storage, coordinator, transport, web-client, Windows
descendant-process, migration-generation, and vet cohorts pass. Retained rung
38 task `tsk_019fe638-f4f9-786a-9739-1c588e3d2e2e` passed all 41 stages and
external assertions in 340.83s; its database contains 80 documentation
revisions, 16 exact implementations, and 16 names. Its memory preflight
admitted one of five new lessons and quarantined four whose claimed evidence
did not match the workflow log.
Dev-Log: DL-20260809-005
Change-ID: CL-20260809-001
Commit: pending
Date: 2026-08-09
Type: Fix -- rung-23 deep-pipeline convergence and truthful verification scope
Request-or-TODO: LAD-056, LAD-057, LAD-058, LAD-059
Outcome: Multiple fuzz targets in one package now run under distinct exact
selectors and one shared budget. Direct named-test obligations stop at
exported and direct-command boundaries across every refinement and ledger
consumer, while coverage, mutation, fuzzing, integration, and acceptance
remain mandatory for private helpers. Repeated path-coverage debt routes as
semantic work through Terra-low, Sol-low, and Sol-high. Sub-second suite
timing uses a one-second absolute noise floor alongside the unchanged 1.5x
ratio and reports the effective limit it actually applies.
Affected-behavior: Agent verification scope, fuzz scheduling, convergence
routing, and non-functional timing verdicts. No user requirement, acceptance
assertion, mutation threshold, coverage requirement, or stage was removed.
Compatibility-or-migration: No schema migration. Parsed function records gain
in-memory boundary metadata; metadata-free callers retain conservative scope.
Verification: Focused fuzz, boundary, convergence, coordinator, pipeline, vet,
and diff cohorts pass. Retained exact rung-23 `all-direct-gates-1` performed
41/41 stages with zero final failures, built and ran the command with exact
output, survived hostile input, and passed in 563.29s; task
`tsk_019fe4fe-e7da-7614-ada0-ba7a9e8c519e` and all prior failed controls
remain in the shared SQLite/artifact root.
Dev-Log: DL-20260809-001, DL-20260809-002, DL-20260809-003,
DL-20260809-004
Change-ID: CL-20260808-004
Commit: 422c70b
Date: 2026-08-08
Type: Fix -- TODOS.md declared four task identifiers twice
Request-or-TODO: REPO-050
Outcome: REPO-024, REPO-027a and REPO-037 were each declared twice, once open
with the diagnosis and once closed with the resolution, so the same work read
as both finished and not started and any count of open tickets overstated by
three. REPO-031 named two unrelated tickets, so cross-references to it could
not be resolved to a single piece of work. Each duplicate pair is merged into
the entry carrying the resolution; the colliding worktree ticket is renumbered
to REPO-051, leaving 031 with the atom-comment rule that every released ledger
entry means. REPO-024 is now a standing unchecked item carrying its last
verification, because a recurring check is never complete.
Affected-behavior: TODOS.md only. No source, schema, or gate behaviour changes.
Compatibility-or-migration: References to REPO-031 meaning the worktree
prohibition now read REPO-051. No released ledger entry was rewritten.
Verification: New TestREPO050_EveryTaskIdentifierIsDeclaredExactlyOnce guards
it, and discriminates -- run against TODOS.md at the previous commit it
reports all four collisions.
Dev-Log: DL-20260808-014
Change-ID: CL-20260808-003
Commit: 50ea686
Date: 2026-08-08
Type: Fix -- the browser packages' wasm-only source was never vetted
Request-or-TODO: REPO-035
Outcome: `codeflux-dev lint` now runs go vet under both build targets, the way
it already runs Staticcheck. The host pass over ./... is unchanged; a second
pass analyses each browser package under GOOS=js GOARCH=wasm, which reaches 50
files the host target cannot see. It names files rather than packages because
go vet always loads a package's tests, browser tests import the coordinator
and through it SQLite, SQLite has no js/wasm build, and go vet has no
-tests=false to exclude them with.
Affected-behavior: `codeflux-dev lint` only. It gains roughly 13 seconds.
Compatibility-or-migration: None.
Verification: `codeflux-dev lint` exits 0. A new test asserts the wasm pass
reaches files the host pass cannot see -- a pass listing only host-visible
files would close nothing while satisfying every other assertion -- and that
no test file reaches it.
Dev-Log: DL-20260808-012
Change-ID: CL-20260808-002
Commit: 387ee43
Date: 2026-08-08
Type: Fix -- the seed server's stale-lock record covered the wrong window
Request-or-TODO: REPO-041c
Outcome: `codeflux-dev seed --serve` records its reclaimable pidfile before it
builds or spawns anything, instead of after the run was already driven, so a
hard kill during the build-and-drive window now leaves a record the next run
can act on. The record's directory is created rather than assumed, and a
record naming the running process is skipped instead of killed.
Affected-behavior: `codeflux-dev seed --serve` only. The stale-lock sweep, the
exact-executable-path verification, and the worker path match are unchanged.
Compatibility-or-migration: None. The record's on-disk shape is unchanged.
Verification: New end-to-end test proves os.RemoveAll(root) fails while a
process runs from inside root and succeeds after the sweep; new record and
call-order tests; the four pre-existing kill tests and the whole
./cmd/codeflux-dev package pass.
Dev-Log: DL-20260808-011
Change-ID: CL-20260808-001
Commit: 8ba64a8
Date: 2026-08-08
Type: Fix -- startup reported a missing directory as a rival coordinator
Request-or-TODO: REPO-049
Outcome: Starting into a data directory that does not exist yet now creates it
and starts. It previously failed with "another Codeflux coordinator owns this
database" and exit 1 with no coordinator running and the port free, because
the single-instance lock is taken on a file beside the database and was taken
before storage.Open created that directory. A lock that could not be attempted
and a lock another process holds are now reported as the different outcomes
they are, instead of sharing the contention message.
Affected-behavior: `codeflux start` and `codeflux-dev serve` on a fresh root.
Genuine contention is unchanged and still refuses with the same wording.
Compatibility-or-migration: None. storage.EnsureDatabaseDirectory is new and
exported; ensureDatabaseFile now calls it with no change in behaviour.
Verification: New TestREPO049 pair in internal/coordinator, proven to
discriminate in both directions; existing TestAUDIT009a startup flow and the
whole internal/storage package pass; go build and gofmt clean.
Dev-Log: DL-20260808-009
Change-ID: CL-20260803-180
Commit: ba048aa
Date: 2026-08-04
Type: Fix -- three tool rules were stated only in the refusal that enforced them
Request-or-TODO: Standing goal to optimise the prompting
Outcome: A refusal is a correction after the round is spent; the descriptor is
the only place that can stop the round being spent. Three rules were stated
only in the refusal. The suite is answered from the last run when nothing has
changed and refused after twice -- rung 16 spent 40 of its 73 rounds asking
anyway, and wrote six times in all. A second wholesale rewrite of one file in
an attempt is refused -- rung 9 hit that seven times in a single pass. Both are
now in the descriptors. The test tool's summary was also "Run an approved test
recipe", which names a category and no action: the arguments were not guessable
from it, so a run had to guess and spend a round finding out. It now says what
to call. Adds LAD-004 for a pre-existing catalog/descriptor RPC count mismatch
found by the regression sweep and confirmed present at 5577f21.
Affected-behavior: The apply-edit and test descriptors carry their own rules.
Compatibility-or-migration: None.
Verification: Two new tests, one asserting all three rules are stated across the
three write-and-verify tools so a fourth rule cannot be added refusal-only.
The ladder cannot measure this today: no credits.
Dev-Log: DL-20260803-190
Change-ID: CL-20260803-179
Commit: f8fc5f3
Date: 2026-08-04
Type: Fix -- a systematic pass over every instruction that asks a run to write
code, rather than one more reaction to one more rung
Request-or-TODO: Standing goal to optimise the prompting
Outcome: Two instructions were fixed reactively today, each after a rung failed
on it. The property gate is the measured one: described in prose it produced
nothing -- rung 18 read it twice and wrote twenty-two tests without a loop in
any of them -- and with five lines of Go under it the same model on the same
rung reached thirteen of thirty-one tests examining a set. This applies that
result to the instruction that shares the defect before a rung demands it.
fuzzTargetInstruction described a fuzz target in prose, and a Go fuzz target
is fiddly in a way prose hides: every parameter of the f.Fuzz closure after
*testing.T must match what f.Add supplies, in order and in type, and a
mismatch is a compile error rather than a weak test. atom-fuzz was a sendback
on rungs 9, 12, 13, 14, 16, 18 and 19. It now shows the target and names both
ways it gets written wrong -- the arity mismatch, and treating a decoder's
refusal as a finding when it is a pass. The sweep also confirmed two families
are closed rather than merely unreported: every instruction that can be raised
while the build is broken says so, and the two that cannot assert nothing
about the suite rather than guessing.
Affected-behavior: The atom-fuzz instruction carries a worked example.
Compatibility-or-migration: None.
Verification: Three new tests, one of them a sweep asserting that every
instruction asking for code shows the code -- property, fuzz, the unreachable
marker and the atom schema -- so the next instruction added is held to the
same rule. The ladder cannot confirm the effect today: the OpenAI account has
no credits remaining and every run 429s at about fifteen seconds.
Dev-Log: DL-20260803-189
Change-ID: CL-20260803-178
Commit: 9ad54ea
Date: 2026-08-04
Type: Fix -- LAD-003. The run adopted step identities it generated itself and
assumed the store had written the same ones
Request-or-TODO: LAD-003
Outcome: The run's step identities and the store's are different vocabularies,
paired by position. The pairing read the plan built to send to the store
rather than the one the store returned. Those are the same object on an
ordinary write and need not be on an idempotent one, where the store answers
with the revision it already had -- and the identities the run then adopts are
ones the store never issued. Every later read of such a step is refused with
"load plan step state: database constraint: step does not belong to run plan",
which is a true sentence about a situation nothing else reports and which
names neither the step nor the cause. It cost two entire ladder passes on
2026-08-04 before the widened stage trace made it legible at all. Pairing now
reads recorded.Plan.Steps, falls back to the local build only when the store
echoes nothing, and traces the mismatch when the two lengths disagree.
Together with CL-20260803-174, which drops an unpaired step rather than
keeping it, a run now carries only steps the store knows about.
Affected-behavior: A run adopts the identities the store issued. A mismatch is
visible in the trace instead of surfacing as a constraint violation three
attempts later.
Compatibility-or-migration: None.
Verification: Three new tests over the extracted pairing: identities come from
the store, a short recorded plan leaves the extra steps unpaired and adoption
then drops them, and an empty plan pairs nothing rather than half of
something. The ladder cannot confirm this today -- the OpenAI account has no