git-branches-tags.md 3.7 KB

Git branches and tags — how this repository is organised

Snapshot: 2026-10-22, stop point. master = c2664ac, in sync with origin/master. 298 tags (mostly historical 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 c2664ac, in sync with origin/master 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)

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-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-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 298 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 = 298 is expected; only the recent ones above matter for the current session.

Current state

  • master = c2664ac, synced with origin/master.
  • All feature tags and session tags are on the remote.
  • Nothing to push.
  • Next session: start from master and read docs/handoff-2026-10-22-next.md.