git-branches-tags.md 7.1 KB

Git branches and tags — how this repository is organised

Snapshot: 2026-10-24, after core separate compilation. master = the current docs commit (separate compilation + tag map); origin/master = 6e40e26. M5/M6, triage, library folders and separate compilation are local; earlier M1–M4 work is on the remote. 327 tags (325 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 docs commit, 15 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

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 = 327 (325 v3-*) is expected; only the recent ones above matter for the current session.

Current state

  • master = current docs commit (separate compilation + tag map), 15 commits ahead of origin/master (6e40e26): M5/M6, LFLOAT, triage, library folders, separate compilation and this tag map.
  • v3-open-arrays-m5/m6, v3-open-arrays, v3-lfloat, v3-corpus-triage-2026-10-24, v3-library-folders, v3-separate-compilation and their summary/session tags are local; push them with master when ready. Tags through M4 are already on the remote.
  • Next session: start from master and read docs/handoff-2026-10-23-next.md; fill separate-compilation gaps (M2 -I import scanning, incremental objects, generic instances, per-object self-host).