git-branches-tags.md 4.7 KB

Git branches and tags — how this repository is organised

Snapshot: 2026-10-23, after v3-exceptions. master = 96a3080 (the exceptions M5 docs commit) plus this map update; origin/master = 2a30d8c. The exceptions M1–M5 commits are local and not pushed yet. 304 tags (302 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 96a3080 + map, 5 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

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 Final immutable 2026-10-23 exceptions 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-23-end;
  • v3-session-2026-10-23 is the earlier range-check checkpoint and 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 304 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 = 304 (302 v3-*) is expected; only the recent ones above matter for the current session.

Current state

  • master = 96a3080 + this map, 5 commits ahead of origin/master (2a30d8c).
  • v3-exceptions and v3-session-2026-10-23-exceptions-end are local; push them with master when ready. Earlier PACKEDSET/history tags are already on the remote.
  • Next session: start from master and read docs/handoff-2026-10-23-next.md.