mirror of
https://github.com/garrytan/gstack.git
synced 2026-09-17 18:32:19 +02:00
docs: sync project docs with the v1.81.0.0 review fixes
BROWSER.md, ARCHITECTURE.md, CONTRIBUTING.md, README.md, CLAUDE.md,
docs/TESTING_INTERNALS.md and docs/PROJECT_STRUCTURE.md now describe the
shipped renderer and setup: the loopback render server's per-render secret
path and real-path containment, ENGINE= naming the engine that actually
rendered (mid-run retry on gstack's own browser), EVAL/PAGE_ERRORS fenced as
untrusted content, --wait-timeout and the CLI's argv guards, the receipted
_aside_exec prelude ({{ASIDE_EXEC_PRELUDE}} in the placeholder table), the
LOCAL host rule without .local, LOCAL-only HEAD checks in the links script,
GSTACK_SKIP_ASIDE across probe/renderer/setup, the ownership-gated
retired-skill prune, the widened NEEDS_BUILD check, and the new free tests
(gstack-render-cli, setup-prune-stale-generated, setup-browser-hint,
setup-needs-build, make-pdf cli-exit-codes and setup-smoke).
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
01dbd56b09
commit
97fc880869
@@ -290,18 +290,28 @@ Names are either short (`qa`) or namespaced (`gstack-qa`), controlled by
|
||||
skip the interactive prompt.
|
||||
|
||||
**Ownership gate (#2119):** `setup` writes a `.gstack-owned` marker into every
|
||||
skill directory it creates, and `setup` (the linker, the alias installer, and
|
||||
both prefix-flip cleanups) and `bin/gstack-relink` only delete or link over an
|
||||
entry they can prove is gstack's. Strong proof (a symlink resolving into gstack,
|
||||
or the marker) allows deleting or refreshing the whole directory. Weak proof (a
|
||||
skill directory it creates, and `setup` (the linker, the alias installer, both
|
||||
prefix-flip cleanups, and the retired-skill prune) and `bin/gstack-relink` only
|
||||
delete or link over an entry they can prove is gstack's. Strong proof (a
|
||||
symlink resolving into gstack, or the marker) allows deleting or refreshing the
|
||||
whole directory. Weak proof (a
|
||||
real SKILL.md byte-identical to the source, or carrying gen-skill-docs' two-line
|
||||
banner) covers only that one file, and a weakly-proven file that differs is
|
||||
moved to `~/.gstack/backups/skills/<ts>/<skill>/SKILL.md` before gstack links
|
||||
over it. Anything else is a foreign skill: skipped, and named in setup's final
|
||||
summary. The rule lives in two copies (`setup` and `bin/gstack-relink`); keep
|
||||
them in sync until the shared helper filed in TODOS.md lands. Pinned by
|
||||
`test/setup-link-ownership.test.ts`, `test/setup-cleanup-orphans.test.ts`, and
|
||||
`test/relink.test.ts`.
|
||||
them in sync until the shared helper filed in TODOS.md lands. The retired-skill
|
||||
prune (`_prune_stale_generated`) applies the same strong/weak split to renders
|
||||
of skills that no longer exist, through its own gate
|
||||
(`_owned_for_windows_refresh`: a real host directory is a candidate only when
|
||||
its SKILL.md carries the generated banner; the marker and byte identity are not
|
||||
consulted): it scans the render tree and every host skills dir,
|
||||
deletes a real render directory, removes a host symlink only when it resolves
|
||||
into gstack, cleans a bannered real directory through `_cleanup_weak_dir`,
|
||||
never follows a symlink inside the render tree, and recognizes a skill renamed
|
||||
through its frontmatter `name:`. Pinned by `test/setup-link-ownership.test.ts`,
|
||||
`test/setup-cleanup-orphans.test.ts`, `test/setup-prune-stale-generated.test.ts`,
|
||||
and `test/relink.test.ts`.
|
||||
|
||||
**Note:** Vendoring gstack into a project's repo is deprecated. Use global install
|
||||
+ `./setup --team` instead. See README.md for team mode instructions.
|
||||
|
||||
Reference in New Issue
Block a user