git-branches-tags.md 7.8 KB

Git branches and tags — how this repository is organised

Snapshot: 2026-10-24, after the dynamic-set showcase. master = the current showcase/docs/tag-map commit; origin/master = b1d14f9 (the PDF comparison commit). 336 tags (334 v3-* checkpoints).

Mental model:

Branches move; tags don't. Only master is active. Tags are labels on commits (checkpoints), not lines of development.

Branches

Branch State What it is
master current showcase commit, 18 commits ahead of origin The only active branch; all current work is here.
ast-stage-c 0f611c0 (2026-10-08), local only Old stage branch, fully merged into master. Stale.
generics-inc1 6639c19, 6 commits behind origin/generics-inc1 Old generics work, fully merged into master. Stale.
resolve-check 95ca4d6, in sync with origin Old branch merged into master. Stale.

git branch --merged master lists all of them: nothing is unmerged. The old branches may be deleted locally with git branch -d ast-stage-c generics-inc1 resolve-check (optional and harmless).

Remote branches: origin/master, origin/generics-inc1, origin/resolve-check (there is no origin/ast-stage-c).

Feature tags — the session's real history

Each points at the commit that landed a feature, all with green gates:

Tag Commit Work
v3-corpus-triage aa4f49b PIM multi-index arrays, typed subranges, ordinal FOR (+12)
v3-empty-string f87bcc9 ISO "" as CHAR (+6)
v3-libc-prototypes c02fd41 typed libc prototypes, printf varargs (+6)
v3-system-types 713650f SYSTEM sized types + qualified SYSTEM (+8)
v3-proc-types f236600 ISO procedure-type syntax (+4)
v3-byte 7621f16 true 8-bit BYTE/SBYTE
v3-word16 a5d0f16 true 16-bit WORD16/CARDINAL16/INTEGER16
v3-sysclock 4d05afe ISO SysClock (+2)
v3-smallfix 87e8605 small conformance items (+6)
v3-rangechecks 54d84b9 runtime subrange range checks (+3 trap tests)
v3-packedset 6b2df4c ISO PACKEDSET, 1/2/4-byte storage
v3-exceptions 02b3763 ISO exceptions M1–M4: parser, runtime, libraries, traps
v3-ptrchain e804e57 self-referential record layout and p^.next^.value
v3-function-exception 4238f67 result function falling off its end
v3-finally c0c227c module FINALLY / termination
v3-open-arrays-m2 4616e51 fixed rank-2/3 flat storage + views
v3-open-arrays-m3 557addb open multi-array views + call conversion
v3-open-arrays-m4 df72d03 payload SIZE/TSIZE and view ADR
v3-open-arrays-m4-summary 707b7e4 M4 session summary/comparison/README refresh
v3-open-arrays-m5 04ab8b5 flat multi-dimensional record fields and constructors
v3-open-arrays-m5-summary 680ace0 M5 summary/docs refresh
v3-open-arrays 11c8db2 final: pointer-based 1-D open views
v3-open-arrays-m6-summary c22e4ae final M6 summary/docs
v3-lfloat 5ae8152 ISO/gm2 LFLOAT builtin
v3-corpus-triage-2026-10-24 895ee2e post-open-array corpus triage
v3-library-folders f904307 dialect library folders
v3-library-folders-summary 3f5ac86 library-folder summary/docs
v3-separate-compilation 0adc637 -c objects, stable symbols, init links, M2make --separate
v3-separate-compilation-summary bfe471c separate-compilation summary/docs
v3-separate-compilation-p1 92d11d9 M2 -I transitive resolution, incremental separate objects
v3-separate-fixpoint 5374a11 per-object stage2/stage3 self-host fixpoint
v3-separate-abi-vtables a554873 content ABI stamp + definition-only objects/vtables
v3-generic-instances a3664a2 separate type/value/procedure generic-instance objects
v3-generic-class-instances b4a70fa generic-class instance objects; imported impls parsed but not emitted
v3-language-robustness 1017487 ADDRESS/pointer equality + language/robustness notes
v3-wide-sets 31eaefe wide sets and bounded SET OF CARDINAL
v3-dynamic-sets 34cd0a9 sorted range lists for SET OF CARDINAL/INTEGER
v3-showcase25 d823a33 dynamic-set/ADDRESS showcase and docs

These are immutable checkpoints. Useful commands:

git show --stat v3-smallfix
git diff v3-sysclock v3-smallfix      # what the last step changed

Session tags — why there are three similar names

Tag Points at Meaning
v3-session-2026-10-19 c9c1121 Previous session's final summary.
v3-session-2026-10-23 2d1c658 Moving session tag, advanced once for the range-check summary.
v3-session-2026-10-23-end adba8eb Immutable PACKEDSET/range-check stop point (earlier the same day).
v3-session-2026-10-23-exceptions-end 96a3080 Immutable 2026-10-23 exceptions session tag.
v3-session-2026-10-23-open-arrays-end 707b7e4 2026-10-23 open-array M1–M4 session tag.
v3-session-2026-10-24-open-arrays-end 680ace0 2026-10-24 open-array M5 session tag.
v3-session-2026-10-24-open-arrays-m6-end c22e4ae Open-array M6 session tag.
v3-session-2026-10-24-triage-end 895ee2e 2026-10-24 triage session tag.
v3-session-2026-10-24-library-folders-end 3f5ac86 2026-10-24 library-folders session tag.
v3-session-2026-10-24-separate-end bfe471c Final immutable 2026-10-24 separate-compilation session tag.
v3-session-2026-10-22 c2664ac Moving session tag. Advanced several times and force-pushed to the final commit.
v3-session-2026-10-22-final 0e81019 Early checkpoint created before the session continued (byte/word16/SysClock/smallfix came after). Historical noise now.
v3-session-2026-10-22-end c2664ac Final immutable session tag. Use this one.

For "where did the 2026-10-23 session end?":

  • canonical: v3-session-2026-10-24-open-arrays-m6-end for the final open-array stop point;
  • earlier checkpoints are v3-session-2026-10-24-open-arrays-end (M5), v3-session-2026-10-23-open-arrays-end (M1–M4), v3-session-2026-10-23-exceptions-end (exceptions) and v3-session-2026-10-23-end (range checks/PACKEDSET); v3-session-2026-10-23 is a moving tag by convention.

For "where did the 2026-10-22 session end?":

  • canonical: v3-session-2026-10-22-end (or master, same commit);
  • v3-session-2026-10-22 is equivalent now, but it is a moving tag by convention — avoid moving tags in the future;
  • v3-session-2026-10-22-final is not the end; it is an earlier checkpoint at 0e81019.

To remove the stale checkpoint (tag only, no commits/code):

git tag -d v3-session-2026-10-22-final
git push origin :refs/tags/v3-session-2026-10-22-final

Why 307 tags?

The project convention is one v3-* tag per green step across all sessions (two-phase parse slices, generics increments, Unicode, stdlib, …). They are a searchable history of passing states, not branches. git tag --list | wc -l = 336 (334 v3-*) is expected; only the recent ones above matter for the current session.

Current state

  • origin/master = b1d14f9 (the PDF comparison commit). Local master is 18 commits ahead: P1, per-object fixpoint, ABI/class, generic-instance, generic-class, language/robustness, wide-set/dynamic-set and showcase feature/map commits.
  • The recent feature tags are local; push them with master when ready.
  • Next session: start from master and read docs/handoff-2026-10-23-next.md; fill separate-compilation gaps (generic-instance objects and a green per-object self-host fixpoint; M2 -I and incremental objects are now done).