record gstack 2 baseline and backlog map

This commit is contained in:
Sinabina
2026-07-16 17:46:41 -07:00
parent 2c487305d6
commit ce37bd36a9
5 changed files with 35867 additions and 0 deletions
File diff suppressed because it is too large Load Diff
+101
View File
@@ -0,0 +1,101 @@
# GStack 2.0 baseline
This is the measured starting point, not a completion claim. The audit was run
from detached base worktree `/tmp/gstack2-baseline.e2qk7F` at commit
`bb57306d98c97011b0919c6132705a15b1579781` on 2026-07-16.
## Skill surface and size
| Measure | Baseline |
|---|---:|
| Source `SKILL.md.tmpl` templates | 55 |
| Primary generated skill outputs | 54 |
| Generated section files | 16 |
| Primary surface | 61,093 lines / 3,301,287 bytes |
| Audited union | 67,996 lines / 3,695,876 bytes |
| Repeated preambles | 49 |
| Repeated-preamble footprint | 35,802 lines / 2,132,374 bytes |
| Generated hosts | 10 |
The 10 generated hosts observed in the generator/check logs are Claude Code,
OpenAI Codex CLI, Factory Droid, Kiro, OpenCode, Slate, Cursor, OpenClaw,
Hermes, and GBrain.
The catalog-token audit has two materially different numbers:
- Correct YAML parsing of the names and descriptions for 54 skills is about
**1,100 token-equivalents**.
- The official buggy capture reported
`captureBaseline().estTotalCatalogTokens = 4,214`. It applied the same
four-characters-per-token estimate to **16,857 incorrectly parsed
description bytes**. The 4,214 figure is therefore an instrument bug, not the
real catalog cost.
These counts establish the consolidation problem: they do not by themselves
set a target or prove that any repeated instruction is safe to remove.
## Installer/discovery baseline
The old standard-container path has a concrete root-shadow failure. From the
detached base worktree, this command:
```bash
DISABLE_TELEMETRY=1 npx --yes skills add . --list
```
reported `Found 1 skill` and listed only the root `gstack` skill. Under the
skills CLI discovery rule, the shallower root `SKILL.md` is discovered first
and shadows discovery of the nested standard-container skills. Separately,
legacy `./setup` installs 54 host-specific skills. Thus “the legacy installer
works” is not evidence that the standard installer exposes the same surface;
both install roots and collision behavior need migration tests.
## Command baseline
The baseline runner recorded these commands:
```bash
bun install
bun run gen:skill-docs --host all
bun run skill:check
bun run build
bun test
bun run test:windows
bun test design/test
bun test ios-qa/daemon/test
```
Results are intentionally not summarized as “green”:
- dependency installation completed with 297 packages;
- all-host generation reached its final `llms.txt` summary;
- the build reached its final Node server bundle step;
- `skill:check` exited 1 because `claude/SKILL.md` was missing;
- the broad `bun test` capture contains seven explicit failed tests and one
unhandled between-tests error, then ends without Bun's terminal summary or
exit record;
- the Windows-safe run exited 1 on shard 5 of 20;
- the targeted design suite contains one failed timing assertion and no
terminal summary;
- the targeted iOS daemon suite completed with 91 pass / 0 fail.
The precise assertions and log paths are in
[TEST-EVIDENCE.md](./TEST-EVIDENCE.md). An empty
`/tmp/gstack2-baseline-logs/git-status-after.txt` records no tracked/untracked
status output after the baseline runner, but it is not a substitute for test
success.
## Backlog baseline
The frozen API inputs contain 755 unique open GitHub items after reconciling
the issues endpoint (which also contains PRs) with the PR endpoint:
- `garrytan/gstack`: 748 items;
- `time-attack/gstack`: 7 items;
- 326 issues and 429 pull requests in total;
- 1,184 raw open-endpoint records, including 429 reconciled duplicates;
- 16 required upstream PRs with separate detail and changed-file snapshots.
See [BACKLOG-MAP.json](./BACKLOG-MAP.json) for the complete mapping and
`scripts/gstack2/generate-backlog-map.ts` for the deterministic, offline
generator.
+56
View File
@@ -0,0 +1,56 @@
# GStack 2.0 status
**Current state: BASELINED AND MAPPED — NOT IMPLEMENTED, NOT VERIFIED, NOT
DONE.**
This checklist separates evidence capture from delivery so generated plans or
passing narrow tests cannot be mistaken for a completed rewrite.
## Phase checklist
- [x] Freeze the audit base at
`bb57306d98c97011b0919c6132705a15b1579781`.
- [x] Record template/output/section, line, byte, repeated-preamble, catalog,
host, and installer-discovery baselines.
- [x] Capture the baseline command logs without relabeling pre-existing
failures as passes.
- [x] Flatten and reconcile every frozen open issue/PR snapshot into one
deterministic map (755 unique items from 1,184 endpoint records).
- [x] Trace all 16 required PRs to their detail snapshots, changed-file
snapshots, component, judgment module, and replacement-test contract.
- [ ] Review and approve the GStack 2.0 architecture and migration contract.
- [ ] Convert heuristic backlog dispositions into accepted product/engineering
decisions. `NEEDS_EVIDENCE` is intentionally the majority disposition.
- [ ] Implement the consolidated judgment modules and runtime components.
- [ ] Implement the replacement contract tests named in `BACKLOG-MAP.json`.
- [ ] Prove legacy setup migration and standard-installer discovery without
root/nested skill shadowing.
- [ ] Prove behavior and safety parity across all 10 generated hosts.
- [ ] Re-run the broad, Windows-safe, design, and iOS suites with complete
terminal summaries; separate repaired baseline failures from regressions.
- [ ] Produce release evidence and make an explicit ship/no-ship decision.
## Evidence index
| Evidence | Path | State |
|---|---|---|
| Measured baseline | [`BASELINE.md`](./BASELINE.md) | Recorded |
| Baseline command results and failures | [`TEST-EVIDENCE.md`](./TEST-EVIDENCE.md) | Recorded; baseline is not green |
| Deterministic backlog generator | [`../../scripts/gstack2/generate-backlog-map.ts`](../../scripts/gstack2/generate-backlog-map.ts) | Implemented and locally validated |
| Complete mapped backlog | [`BACKLOG-MAP.json`](./BACKLOG-MAP.json) | Generated from frozen snapshots |
| Baseline logs | `/tmp/gstack2-baseline-logs/` | External/ephemeral audit evidence |
| time-attack snapshots | `/tmp/gstack2-{open-items,open-prs,label}-pages.json` | External/ephemeral frozen input |
| garrytan snapshots | `/tmp/gstack2-upstream-{open-items,open-prs,label}-pages.json` | External/ephemeral frozen input |
| Required PR evidence | `/tmp/gstack2-port-prs/{610,...,2189}{,-files}.json` | External/ephemeral frozen input |
## Interpretation rules
- `PORT_JUDGMENT` means “port the decision/policy with a replacement test,”
not “apply the upstream patch verbatim.”
- `FIX_IN_GSTACK_2` still requires a reproduced defect.
- `NEEDS_EVIDENCE`, `DEFER_COMMUNITY`, and
`SUPERSEDED_BY_CONSOLIDATION` remain review decisions, not closed GitHub
items. The generator performs no external mutation.
- The heuristic map is deterministic triage. Title-first and narrow body rules
make it auditable, but human approval is still required before implementation
or upstream disposition changes.
+70
View File
@@ -0,0 +1,70 @@
# GStack 2.0 baseline test evidence
Scope: detached base worktree `/tmp/gstack2-baseline.e2qk7F`, commit
`bb57306d98c97011b0919c6132705a15b1579781`, captured 2026-07-16. These are
baseline observations only; no result below was produced by the GStack 2.0
implementation.
## Command ledger
| Command | Evidence | Observed result |
|---|---|---|
| `bun install` | `/tmp/gstack2-baseline-logs/bun-install.log` | Completed; Bun 1.3.14 reported 297 packages installed. |
| `bun run gen:skill-docs --host all` | `/tmp/gstack2-baseline-logs/gen-all.log` | Reached the final GBrain token table and `llms.txt` summary (`55 skills, 76 browse commands`); no error marker is present. |
| `bun run skill:check` | `/tmp/gstack2-baseline-logs/skill-check.log` | **Exit 1**: `claude/SKILL.md — generated file missing`. The same run reported 54/54 outputs for each of the 10 hosts and fresh generated files, but the missing primary output keeps the command red. |
| `bun run build` | `/tmp/gstack2-baseline-logs/build.log` | Reached the final Node-compatible server bundle (`server-node.mjs`, 0.83 MB); no error marker is present. |
| `bun test` | `/tmp/gstack2-baseline-logs/bun-test.log` | **Not green and incompletely terminated**: 4,292 `(pass)` markers, 488 `(skip)` markers, seven explicit `(fail)` markers, and one unhandled between-tests error. The capture ends after `browse/test/findport.test.ts` without Bun's aggregate summary or exit record. |
| `bun run test:windows` | `/tmp/gstack2-baseline-logs/test-windows.log` | **Exit 1** on shard 5/20. The runner selected 189 Windows-safe files and excluded 155. Completed shard summaries contain 593 passes, 14 skips, and one failed test before the run stopped. |
| `bun test design/test` | `/tmp/gstack2-baseline-logs/design-test.log` | **Not green**: 64 pass markers and one explicit failure. The log ends on daemon shutdown without an aggregate summary or exit record. |
| `bun test ios-qa/daemon/test` | `/tmp/gstack2-baseline-logs/ios-daemon-test.log` | **Pass**: 91 pass, 0 fail, 217 assertions across 10 files. |
`/tmp/gstack2-baseline-logs/git-status-after.txt` is empty, recording no status
entries after the runner. The logs are external audit artifacts and are not
vendored into the repository.
## Pre-existing `bun test` failures
The broad-suite log records these seven explicit failures:
1. `gstack-decision-search --recent / --scope / datamark > --scope filters by scope`
expected output containing `branch-call` and received an empty string.
2. `gstack-gbrain-detect > emits valid JSON even when nothing is configured`
expected status 0 and received 127.
3. `gstack-gbrain-detect > reports gstack_brain_git: true when GSTACK_HOME has a .git dir`
attempted to parse empty output and raised `Unexpected EOF`.
4. `gstack-gbrain-detect > reports gbrain_config + engine when ~/.gbrain/config.json exists`
attempted to parse empty output and raised `Unexpected EOF`.
5. `gstack-gbrain-detect > malformed config returns null engine, does not crash`
expected status 0 and received 127.
6. `gstack-gbrain-detect > detects a mocked gbrain binary on PATH and reports its version`
expected status 0 and received 127.
7. `resolve-user-slug fallback chain > persists resolution to user_slug_at_<hash> on first call`
expected a hashed key and observed `user_slug_at_local: persisttest`.
Separately, `test/gbrain-refresh-install-render.test.ts` raised an unhandled
between-tests error: `Could not locate gbrain-refresh ok) branch`. Because the
log has no terminal Bun summary, the marker counts are evidence of what ran,
not a claim that all files were reached or that the command had only those
failures.
## Other pre-existing failures
- `skill:check`: the primary `claude/SKILL.md` generated file was absent; the
script explicitly exited with code 1.
- Windows-safe shard 5:
`Source-level guard: terminal-agent > lazy spawn: claude PTY is spawned in message handler, not on upgrade`
still looked for `spawnClaude(`, while the source excerpt used
`maybeSpawnPty(...)`. The shard reported 82 pass / 1 skip / 1 fail and the
remaining 15 shards did not run.
- Design target:
`generateVariant Retry-After handling > HTTP-date: honors a future date with no extra leading exponential`
expected a delay of at least 2,500 ms and observed 2,246 ms.
## What this evidence does not establish
- It does not establish a green baseline.
- It does not establish that GStack 2.0 preserves behavior; replacement
contract tests have not yet been implemented.
- It does not turn incomplete logs into passes.
- It does not attribute these failures to later changes; every failure above
was captured from the stated base SHA before GStack 2.0 work.