ops(tickets): redmine 490-499 fleshed; session artifacts tracked

This commit is contained in:
2026-08-29 05:24:34 -05:00
parent c01b3d6295
commit fab1f48fb8
44 changed files with 846 additions and 2 deletions
@@ -0,0 +1,3 @@
Founder directive: a fifth crossfeed dir is LIVE: /home/_crossfeed/founder
(owner reachableceo). Add it to your turn-start peer reads; the founder PMO publishes
STATUS.md there. Same ambient-only rules. Archive this notice after reading.
@@ -0,0 +1,4 @@
Founder directive: cross-vertical awareness channel is LIVE at /home/_crossfeed.
Read /home/_crossfeed/README.md and adopt it into your protocol checklist:
publish STATUS.md (your dir only) at end of each active turn; read peer dirs
at turn start. Publish your first STATUS.md now. Then archive this notice.
@@ -0,0 +1,4 @@
Founder directive: cross-vertical awareness channel is LIVE at /home/_crossfeed.
Read /home/_crossfeed/README.md and adopt it into your protocol checklist:
publish STATUS.md (your dir only) at end of each active turn; read peer dirs
at turn start. Publish your first STATUS.md now. Then archive this notice.
@@ -0,0 +1,6 @@
Founder directive: PMO + Work screens now auto-relaunch crush (wrapper:
~/.coordinate/scripts/pmo-loop.sh pmo|work; logs: logs/<role>-relaunch.log).
Screen names normalized org-wide: <USER>-PMO and <USER>-Work ("TSGCOO-Crush"
retired). Controls: touch ~/.coordinate/RELAUNCH-FRESH[-WORK] before quitting
for a clean next session; pin your sid via ~/.coordinate/[WORK-]SESSION-ID
(yours may be pre-pinned). Founder attaches via screen -r <USER>/<name>.
@@ -0,0 +1,25 @@
# QUESTION: next disk-reclaim step (post TASK-20260828-0722)
Dangling build-cache prune done (+39G free, / at 80%), but free space is
53G/274G = 19.3%, still below the 20% bar. Measured remaining reclaimable
(docker system df, post-prune):
1) Unused build cache (biggest win)
Build Cache now 66.43GB total, only 121.8MB dangling. Most of the 66GB
is unused-but-referenced cache. Proposal:
docker builder prune -a --filter until=168h -f (cache idle >7d only)
Estimated: tens of GB (4 active builders keep recent layers; older
entries dominate: hundreds of entries 2-4 weeks old).
Risk: slower next builds for EngStack (cache rebuild), no runtime impact.
2) Dangling images (TASK said do NOT touch yet)
Images: 44.71GB reclaimable (dangling only, tagged images untouched).
docker image prune -f
Risk: none to running stacks (26 containers unaffected); loses untagged
intermediate images.
3) Smaller: stopped containers 296.1MB, unused volumes 1.139GB. Not worth
it vs risk of nuking SupportStack-Local demo state; recommend skip.
Recommendation: option 1 first (build cache is stale, not runtime state),
then option 2 if still <20%. Need PMO decision; not proceeding autonomously.
@@ -0,0 +1,41 @@
# REPORT: TASK-20260828-0722-engstack-disk-reclaim (P1)
Status: DONE (dangling build cache pruned; follow-up QUESTION filed, see below).
Command run: docker builder prune -f (dangling only; no -a, no system/image/
volume prune; no containers touched)
## df -h /
Before:
/dev/sda1 274G 247G 14G 95% /
After:
/dev/sda1 274G 208G 53G 80% /
Disk space freed: +39G available (14G -> 53G).
## docker system df
Before:
Images 128 32 108.2GB 44.71GB (41%) reclaimable
Containers 36 26 638.3MB 296.1MB (46%) reclaimable
Local Volumes 31 25 1.491GB 1.139GB (76%) reclaimable
Build Cache 868 4 109GB 42.7GB reclaimable
After:
Images 128 32 108.2GB 44.71GB (41%) reclaimable
Containers 36 26 638.3MB 296.1MB (46%) reclaimable
Local Volumes 31 25 1.491GB 1.139GB (76%) reclaimable
Build Cache 500 4 66.43GB 121.8MB reclaimable
Bytes reclaimed (docker-reported): 42.58GB build cache (868 -> 500 entries).
Note: build-cache delta 109GB -> 66.43GB = 42.6GB; df avail delta ~39G
(overlays share layers with tagged images, so df gain < cache delta).
## Safety checks
- Running containers before: 26; after: 26. None stopped/removed.
- Images/volumes/containers untouched (counts identical).
## Constraint check
Free space after = 53G / 274G = 19.3% < 20% threshold.
Per TASK constraint, next-step proposal filed as QUESTION (not executed):
inbox-pmo/QUESTION-20260828-disk-next-steps.md
Task archived to archive/TASK-20260828-0722-engstack-disk-reclaim.md
@@ -0,0 +1,42 @@
# REPORT: TASK-20260828-0737-disk-reclaim-stale-cache (P1)
Status: DONE. Approved command executed exactly as specified:
docker builder prune -a --filter until=168h -f
No image/volume/system/container prunes run.
## df -h /
Before: /dev/sda1 274G 208G 53G 80% /
After: /dev/sda1 274G 202G 59G 78% /
Disk space freed: +6G available (53G -> 59G).
## docker system df
Before:
Images 128 32 108.2GB 44.71GB (41%) reclaimable
Containers 36 26 638.3MB 296.1MB (46%) reclaimable
Local Volumes 31 25 1.491GB 1.139GB (76%) reclaimable
Build Cache 500 4 66.43GB 121.8MB reclaimable
After:
Images 128 32 108.2GB 44.71GB (41%) reclaimable
Containers 36 26 638.3MB 296.1MB (46%) reclaimable
Local Volumes 31 25 1.491GB 1.139GB (76%) reclaimable
Build Cache 391 4 57.65GB 43.69GB reclaimable
Bytes reclaimed (docker-reported): 8.786GB (109 entries, all idle 8+ days;
df gain smaller due to layer sharing with tagged images).
## Safety checks
- Running containers before: 26; after: 26. None stopped/removed.
- Images/volumes/container counts identical.
## Outcome vs threshold
Free space now 59G/274G = 21.5% >= 20% bar from step 1. No follow-up
QUESTION filed.
## FYI (measured, no action taken)
Remaining Build Cache 57.65GB, of which 43.69GB is unused-but-recent (<7d,
kept by the until=168h filter); it becomes prunable as it ages, or via
`docker builder prune -a -f` at cost of cold rebuilds. Deferred option 2
(dangling images, 44.71GB) still on the table per PMO decision. Combined
ceiling if both ever approved: ~88GB.
Task archived to archive/TASK-20260828-0737-disk-reclaim-stale-cache.md
@@ -0,0 +1,6 @@
REPORT (TSGCTO-Work, 2026-08-28)
TSGCTO-Work online, awaiting first TASK.
Checklist: BOARD.md read, PROTOCOL.md adopted, inbox-work scanned (empty),
log.md tailed. Scope limits acknowledged (no repos/git network/SSH, no sudo).
@@ -0,0 +1,72 @@
# SPIKE: `crush server` (v0.87.0) as screen+TUI replacement — RESEARCH
Date: 2026-08-28 | By: TSGCTO-Work | Turn: crush-spike | Status: DONE
## a) Surface (`crush server --help`)
- Flags: `-c/--cwd`, `-D/--data-dir`, `-d/--debug`, `-H/--host` (TCP **or** unix socket).
- Default socket: `unix:///tmp/crush-<uid>.sock` → here `/tmp/crush-1005.sock` (uid 1005 confirmed).
- Protocol: Go `net/http` mux speaking **HTTP/1.1 + gRPC** (binary contains
`application/grpc`; unknown paths return Go's plain `404 page not found`).
**Not REST** — probed `/healthz /health /v1/sessions /grpc.health.v1.Health/Check`
and connect-style paths: all 404. It exposes the crush client RPC API only.
## b) Test instance (scratch `--data-dir` /tmp/crush-spike-data, socket /tmp/crush-spike.sock)
What it exposes / does:
- Serves the client API: `crush -H unix://... run|session ...` all work through it.
- Persists sessions to **SQLite** `crush.db` + `logs/crush.log` inside `--data-dir`.
- No dashboard, no REST, no health endpoint. stdout log empty even with `-d`.
- Socket created **0755 in world-writable /tmp** (any local uid can connect).
## c) Non-interactive client via `-H unix://...`
**Yes, fully.** Evidence:
- `crush -H unix://... --data-dir <scratch> run "Reply with exactly: SPIKE-OK"`
→ replied `SPIKE-OK`, exit 0; real model turn (glm-5.2/zai, 11k tok) recorded.
- `session last --json`, `session list/new/delete/rename/show` all functional.
- Caveat: client must pass a matching `--data-dir`; with a mismatched dir,
`session last` fails `unable to open database file` → **the DB is file-accessed
client-side too**, the server is not the sole db gatekeeper.
## d) Server-side session liveness (no per-client pty)?
**No.** Decisive evidence:
- Mid-turn (agent running `sleep 20` via shell tool), the tool process was a
**child of the CLIENT** process; the server had **zero child processes** at
every check.
- Agent loop (`app.RunNonInteractive`, `sessionAgent.Run` per data-dir log)
executes in the client binary. `crush run` needs no pty (good), but turn
liveness is tied to the client process.
- Killing the client kills the work; the server adopts nothing. There is no
daemonized/attached-session mode in `session --help` (CRUD only:
list/new/last/show/rename/delete).
## e) Verdict
**NOT production-viable TODAY as the agent process layer replacing screens.**
It is a shared gateway/db service (central socket, shared data dir), not a
session host. We would still need a process supervisor for every turn — which
is exactly what screens provide today. Adopting it adds risk without removing
the supervision requirement.
Risks if adopted:
- **Auth: none observed.** 0755 socket at predictable `/tmp/crush-<uid>.sock`;
no token/handshake seen; any local user/process can drive our agent+creds.
TCP mode would be strictly worse.
- **SPOF:** one server crash takes out every connected client mid-turn.
- **Resource/locking:** single SQLite `crush.db`; we already hit "unable to
open database file" on a dir mismatch — concurrent multi-client writers on
one db is a contention risk.
- **Multi-user on one host:** per-uid default sockets help, but /tmp sockets
are enumerable/spoofable; no isolation beyond file perms. Also cwd-sensitive
behavior (skills walk hit `permission denied` when run from /tmp).
- Unresolved: where provider auth resolved from during the scratch-dir test
(likely inherited env) — do not assume the server centralizes credentials.
## Migration sketch
Not viable → no migration. Partial adoption (gateway-only for shared egress)
rejected for now: auth-less /tmp socket + SPOF + no supervision offload.
**Keep dispatch v2 (screen + `crush run --session`) as the process layer.**
Revisit triggers: (1) crush ships server-side/daemonized session hosting,
(2) socket auth + socket dir outside /tmp, (3) health endpoint for supervision.
## Cleanup confirmation
Test server killed (verified), `/tmp/crush-spike-{data,logs}.sock` removed
(`ls /tmp/crush-spike*` → No such file). Production screens/sessions/wrappers
untouched; all probes timeout-wrapped; real data dir never pointed at.
@@ -0,0 +1,21 @@
# TASK: EngStack disk reclaim (handoff sequence step 1)
Objective: Free disk on this workstation (/ is 95%, 14G free) by pruning
DANGLING Docker build cache only. Handoff doc: ~/.coordinate/CTOHandoff.md.
Context:
- /home/TSGCTO/projects/TSYSDevStack-RandD/EngStack (build scripts, TODO.md)
- docker system df today: Build Cache 109GB total, 42.7GB reclaimable;
Images 108.2GB, 44.71GB reclaimable (do NOT touch yet)
Constraints:
- NEVER stop/remove running containers (26 SupportStack-Local demos live).
- Allowed: docker builder prune -f (dangling cache only). No -a, no
system prune, no image prune, no volume prune.
- If free space still <20% after, write QUESTION-*.md proposing next
step with measured numbers; do not proceed autonomously.
Deliverable(s): REPORT-*.md in inbox-pmo with df -h / before+after,
docker system df before+after, bytes reclaimed.
Priority: P1
@@ -0,0 +1,16 @@
# TASK: Disk reclaim step 2 — stale build cache (answers QUESTION-20260828-disk-next-steps)
Objective: APPROVED option 1 only: docker builder prune -a --filter until=168h -f
(prune build-cache entries unused >7d).
Decision rationale: stale cache is not runtime state; 26 live containers
untouched. Option 2 (dangling images, 44.7GB) is DELIBERATELY DEFERRED:
untagged intermediates may aid debugging the 14 failed EngStack builds.
Small stuff (stopped containers/volumes) skipped per your own rec.
Constraints: no image/volume/system/container prunes. Same safety checks as
TASK-20260828-0722 (container count before/after).
Deliverable(s): REPORT-*.md with df -h / + docker system df before/after.
Priority: P1
@@ -0,0 +1,27 @@
# TASK: EngStack fix queue — batch 1 (EASY section)
Objective: Clear EASY-fix items from the fix queue in
~/projects/TSYSDevStack-RandD/EngStack/TODO.md, in this order:
flatcam, camotics, daw, gns3, streamdeck, inkscape-ext, stats, natron,
wx-dev, yosys-fpga. Work as many as the turn cleanly allows; stop and
report rather than rushing the last one.
Context:
- Repo: ~/projects/TSYSDevStack-RandD/EngStack (build: bash scripts/build.sh <tool> core)
- TODO.md "Failed builds — fix queue" section has per-tool root causes + fixes + probe commands.
Constraints:
- Follow TODO.md fix notes; VERIFY tags/URLs before editing Dockerfiles
(curl -fsSL <url> -o /dev/null -w '%{http_code}'); probe package names in
a throwaway container (commands in TODO.md) — never guess (host is Debian
13; containers are ubuntu:24.04 / debian:trixie per Dockerfile).
- One tool at a time; full build after each edit; do not touch MEDIUM items
(batch 2) or the SDR section.
- No image/volume/system prunes of any kind. 26 running containers untouchable.
- If a fix note itself proves wrong: 2 attempts max, then skip and record.
Deliverable(s): REPORT-*.md in inbox-pmo: per-tool FIXED (image tag) /
SKIPPED (why), TODO.md checkboxes ticked for fixed tools, log line appended,
remaining queue summary.
Priority: P1