Преглед изворни кода

docs: explain the branch/tag layout (current, historical, moving tags)

Eric Streit пре 23 часа
родитељ
комит
5afe5588a3
2 измењених фајлова са 91 додато и 0 уклоњено
  1. 2 0
      docs/INDEX.md
  2. 89 0
      docs/git-branches-tags.md

+ 2 - 0
docs/INDEX.md

@@ -11,6 +11,8 @@ bisecting *why* a decision was made, not for reading end-to-end).
   range checks; gates).
 - **`handoff-2026-10-19-next.md`** — previous plan (P1–P5 status, the
   ASTDUMP root cause).
+- **`git-branches-tags.md`** — branch/tag map (which refs are current,
+  historical, or moving).
 - **`STATUS.md`** — current state, architecture, conformance policy,
   what remains.
 - **`plan.md`** — the phased plan (Blaise-adapted).

+ 89 - 0
docs/git-branches-tags.md

@@ -0,0 +1,89 @@
+# 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:
+
+```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-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):
+
+```sh
+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`.