# Git branches and tags — how this repository is organised **Snapshot:** 2026-10-24, after dialect library folders. `master` = the current docs commit (library folders + tag map); `origin/master` = `6e40e26`. M5/M6, triage and library folders are local; earlier M1–M4 work is on the remote. 324 tags (322 `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`** | `c0c227c` + docs, 1 commit 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 | These are immutable checkpoints. Useful commands: ```sh 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` | **Final immutable 2026-10-24 library-folders 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): ```sh 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` = 324 (322 `v3-*`) is expected; only the recent ones above matter for the current session. ## Current state - `master` = current docs commit (library folders + tag map), **12 commits ahead** of `origin/master` (`6e40e26`): M5/M6, LFLOAT, triage, library folders and this tag map. - `v3-open-arrays-m5/m6`, `v3-open-arrays`, `v3-lfloat`, `v3-corpus-triage-2026-10-24`, `v3-library-folders` 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`; continue with open-array M5 (records/constructors) and the optional pointer-based 1-D view.