ops(tickets): redmine 490-499 fleshed; session artifacts tracked
This commit is contained in:
@@ -0,0 +1 @@
|
|||||||
|
e1079fafb8c37d60
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
# Board
|
||||||
|
- TSGCTO-PMO (screen TSGCTO-PMO): manager. Founder liaison, planning, TASKs.
|
||||||
|
- TSGCTO-Work (screen TSGCTO-Work): loop orchestrator. Executes inbox-work.
|
||||||
|
- reachableceo (Charles): final authority, sudo holder. Direct channel.
|
||||||
|
- RCEO-PMO/Work (reachableceo account, screens RCEO-PMO/RCEO-Work): 5th vertical, OFF-LIMITS to TSGCTO (Charles works it directly).
|
||||||
|
|
||||||
|
Org context (founder, 2026-08-28): no CEO by design. Officers: CTO, CCO, COO —
|
||||||
|
all report to BOD. CTO + COO lanes run in parallel through 1/1.
|
||||||
|
COO prerequisites (k8s standup, Jenkins on Cloudron) gate some CTO steps.
|
||||||
|
COO (user TSGCOO, owns PFVCluster + TSYSDevStack-SupportStack-Cloudron repos)
|
||||||
|
runs its own PMO on this system; CTO-PMO stays broadly aware of COO Redmine
|
||||||
|
projects via SoR once creds arrive (WIRING-SOR.md). Other accounts: TSGBOD,
|
||||||
|
TSGCCO (officer), TSGCTPO. No cross-home access by design. Proposed
|
||||||
|
cross-vertical awareness: /home/_crossfeed (see log 07:2x; awaiting founder
|
||||||
|
setup).
|
||||||
|
|
||||||
|
Current focus: FOUNDER GATE ACTIVE (no dispatch without founder release). Batch 1 interrupted (quota) after 5 fixed + 1 skipped (camotics, SCons) + stats edited + 3 prepped; lineage b339e9a for batch-1b resume. Awaiting: gate formal text (never received via crossfeed - COO STATUS 08:39 lacks it), SoR creds (WIRING-SOR.md), reachableceo PMO/work stack next body of work.
|
||||||
+40
@@ -0,0 +1,40 @@
|
|||||||
|
# TSYS Dev Stack — CTO Handoff: R&D Engineering Stack Orientation
|
||||||
|
|
||||||
|
> Snapshot: 2026-08-26 · 90-day goal: full hardware-startup R&D engineering stack (RF, CFD, CAD, EDA, etc.) served over k8s.
|
||||||
|
|
||||||
|
## The 90-day topology
|
||||||
|
|
||||||
|
| Stratum | Location | Repo | State |
|
||||||
|
|---|---|---|---|
|
||||||
|
| **Compute/network** | Austin home server room | `~/projects/PFVCluster` | Live: 7-node Proxmox, k3s v1.36.2 HA (3 cnodes, 6-7 workers, Tailscale-only), NFS storage (no Ceph), AWX, OAM stack. SoR = Redmine p55; docs = Discourse #296-309 |
|
||||||
|
| **Eng tooling factory** | Built on workstation; runs in Austin | `~/projects/TSYSDevStack-RandD/EngStack` | 13 images / 10 tools built; 14 builds failed (fix queue in `TODO.md`); gow skins, registry push, k8s deploy not started |
|
||||||
|
| **Support/orchestration** | Reston VA (Cloudron) | `~/projects/TSYSDevStack-SupportStack-Cloudron` | 9/57 apps packaged-committed (inventree built-uncommitted); CI for packaging itself is a documented gap |
|
||||||
|
|
||||||
|
## Integration seams for the R&D-on-k8s goal
|
||||||
|
|
||||||
|
- EngStack → own Docker registry (`secrets/.env.example` ready) → k3s workers; GUI serving via Wolf/GoW (`angelnu/games-on-whales` Helm chart), headless HPC (OpenFOAM/Elmer/yosys) as plain Jobs/Deployments
|
||||||
|
- PFVCluster has **zero GPU/SDR/JTAG passthrough** documented — that work belongs in RandD; NVIDIA + PlutoSDR/RTL-SDR land on k8s worker VMs (tsys3/5/6/7/9)
|
||||||
|
- Cloudron support stack complements: Windmill (automation), Review Board, Healthchecks, APISIX, plus planned NetBox/ChirpStack/SDRangel/Slurm
|
||||||
|
|
||||||
|
## EngStack build state (detail)
|
||||||
|
|
||||||
|
**Built (13 images / 10 tools):** netbeans (core+x11, reference app), eclipse (core+x11), freecad (core+x11, conda-forge), openfoam, grib, containerlab, microvm, noaa, gis-etl, habhub.
|
||||||
|
|
||||||
|
**Failed (14, root causes + fixes in `EngStack/TODO.md`):** yosys-fpga, openshot, wx-dev, streamdeck, natron, stats, gns3, openems, obs, darktable, orcaslicer, camotics, flatcam, daw, inkscape-ext, elmer — mostly Ubuntu 24.04 package-name churn, guessed release URLs, missing git/ca-certificates.
|
||||||
|
|
||||||
|
**Deferred:** Xilinx Vivado (~100GB, do LAST), TI CCS, Android Studio, SDR deep-dive (PlutoSDR + RTL-SDR v1/v2/v3, server-on-k8s / client-on-workstation split).
|
||||||
|
|
||||||
|
## Flags found while orienting
|
||||||
|
|
||||||
|
- **Disk 95% full (14G free)** — 107.7GB reclaimable build cache; needs a prune before further builds
|
||||||
|
- `~/.kube/config` is a **directory** (broken); real kubeconfig is `~/.kube/config.pfv-k8s` per PFVCluster convention
|
||||||
|
- Host docs stale: actual 8 cores / 23Gi RAM vs `startstate.md`'s recorded 4 / 8.5Gi
|
||||||
|
- Workstation Docker daemon also runs the SupportStack-Local demos (~26 containers) — capacity contention during heavy eng builds
|
||||||
|
|
||||||
|
## Recommended sequence
|
||||||
|
|
||||||
|
1. Reclaim disk (build-cache prune)
|
||||||
|
2. Fix the 14 failed builds (`bash scripts/build.sh <tool> core`)
|
||||||
|
3. GPU / SDR passthrough design (NVIDIA + PlutoSDR/RTL-SDR → k8s worker VMs)
|
||||||
|
4. Registry push + k3s promotion (Wolf Helm chart for GUI, Jobs for headless HPC)
|
||||||
|
5. Proprietary tooling sessions (Xilinx last)
|
||||||
@@ -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 @@
|
|||||||
|
2fb8da551ae30c24
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
- Call him reachableceo or Charles. NEVER "the founder" (his words: creepy).
|
||||||
|
# Founder preferences (durable)
|
||||||
|
- Terse replies (<=5 lines unless detail requested); cite file paths, never restate task/report text.
|
||||||
|
- Careful/safe ops on ALL work (founder, 2026-08-28): scripts that mutate
|
||||||
|
anything get preflight checks before mutation, a stated plan, and verify
|
||||||
|
steps after. Idempotent where possible. Confirm gate when interactive.
|
||||||
|
- reachableceo has passwordless sudo for ROOT target only; run-as-other-user
|
||||||
|
must route via `sudo runuser -u <user> -- ...` (sudo -u prompts password).
|
||||||
|
- Vertical homes are 700; cross-user path tests must run via sudo.
|
||||||
|
- Host is Debian 13 (verified 2026-08-28). Never assume distro/paths/commands - verify.
|
||||||
|
- Founder wants reachableceo PMO/work stack next (for sudo + Bitwarden work), after crossfeed body of work.
|
||||||
@@ -0,0 +1,89 @@
|
|||||||
|
# TSGCTO .coordinate — agent-to-agent scratch channel
|
||||||
|
|
||||||
|
Both agents (TSGCTO-PMO, TSGCTO-Work) run as the TSGCTO user. This
|
||||||
|
directory is LOCAL SCRATCH under $HOME: not git-tracked, not durable. It
|
||||||
|
exists so routine agent-to-agent traffic costs a local file write instead
|
||||||
|
of a network round trip. Safe to wipe and rebuild; agents should not treat
|
||||||
|
anything here as permanent. Durable artifacts stay here until the founder
|
||||||
|
attaches systems of record for this stack.
|
||||||
|
|
||||||
|
Layout:
|
||||||
|
- inbox-work/ PMO writes, Work reads: TASK-<yyyymmdd>-<HHMM>-<slug>.md,
|
||||||
|
CANCEL-<same-slug>.md to drop a task.
|
||||||
|
- inbox-pmo/ Work writes, PMO reads: REPORT-*.md (done + evidence),
|
||||||
|
QUESTION-*.md (needs a PMO call), BLOCKED-*.md (stuck + why).
|
||||||
|
- archive/ items fully handled get moved here; prune anything >30 days.
|
||||||
|
- BOARD.md roster + standing state (roles, current focus).
|
||||||
|
- log.md append-only journal, one line per event:
|
||||||
|
date -Is | WHO | what happened
|
||||||
|
- prompts/ standing prompt/intro files. logs/ worker output.
|
||||||
|
|
||||||
|
TASK file fields: Objective / Context (paths) / Constraints /
|
||||||
|
Deliverable(s) / Priority (P1 first, then P2, P3).
|
||||||
|
|
||||||
|
Turn-start checklist (both agents, every turn): read BOARD.md, scan your
|
||||||
|
inbox, tail log.md.
|
||||||
|
|
||||||
|
Rules:
|
||||||
|
- PMO plans, prioritizes, writes TASKs, reports to the founder on drop-in.
|
||||||
|
- Work executes inbox-work in priority order; one turn = do work, then
|
||||||
|
reply in inbox-pmo and archive the TASK. Work never self-assigns scope
|
||||||
|
(suggest via QUESTION instead).
|
||||||
|
- Empty inbox when pinged: say so and stop. No watchers/polling loops.
|
||||||
|
- No sudo for either agent; root needs go BLOCKED -> PMO -> founder.
|
||||||
|
- NO repos, git remotes, or SSH on this account (founder policy): no
|
||||||
|
clone/init/push, no SSH, no git network operations.
|
||||||
|
- Shared account courtesy: never kill the other session screen, no long
|
||||||
|
locks.
|
||||||
|
|
||||||
|
Activation: __USR__-Work sits idle between turns. After writing a TASK, PMO
|
||||||
|
pings it (same account, no sudo):
|
||||||
|
screen -S TSGCTO-Work -X stuff "New TASK in inbox-work - process per protocol now.$(printf '\r')"
|
||||||
|
Never attach to its screen. Headless worker output goes to logs/<slug>.log.
|
||||||
|
|
||||||
|
## Crossfeed (founder directive, 2026-08-28)
|
||||||
|
- /home/_crossfeed/{bod,cto,cco,coo,founder}/ — cross-vertical awareness. Rules:
|
||||||
|
/home/_crossfeed/README.md (authoritative).
|
||||||
|
- PMO turn-start: also read peer STATUS.md files (incl. founder/ = RCEO vertical).
|
||||||
|
- PMO turn-end (active turns): publish/update /home/_crossfeed/cto/STATUS.md
|
||||||
|
(shape per README). Work does not touch crossfeed.
|
||||||
|
- Ambient awareness ONLY; requests with teeth go founder or SoR.
|
||||||
|
|
||||||
|
## Dispatch mechanics v2 (adopted from TSGCOO PATTERN-agent-orchestration.md, 2026-08-28; LIVE)
|
||||||
|
- screen -X stuff is DOORBELL-ONLY: fixed short line, never task text.
|
||||||
|
Doorbell to Work: "New TASK in inbox-work - process per protocol now."
|
||||||
|
Doorbell to PMO (completion): scripts/ping-pmo.sh ("Work turn done...").
|
||||||
|
- Dispatch = headless run with session continuity:
|
||||||
|
screen -dmS work-turn-<slug> bash -c 'cd /home/TSGCTO && env HOME=/home/TSGCTO
|
||||||
|
TERM=xterm-256color crush run --quiet --session <SID> "$(cat <prompt-file>)" >
|
||||||
|
~/.coordinate/logs/<slug>.log 2>&1; ~/.coordinate/scripts/ping-pmo.sh'
|
||||||
|
Prompt files live in prompts/ (preamble + TASK content); first dispatch omits
|
||||||
|
--session; capture lineage id after via `crush session last --json` into BOARD.md.
|
||||||
|
- Serialize: check `screen -ls` for live work-turn-* before dispatching.
|
||||||
|
- Interactive TSGCTO-Work screen: RETIRED from dispatch duty (kept alive, idle).
|
||||||
|
Monitor workers by reading logs/<slug>.log — never attach, no watchers.
|
||||||
|
|
||||||
|
## Founder approve/release gate (founder directive, adopted 2026-08-28)
|
||||||
|
- NO work-turn dispatch without explicit founder release ("go") for that batch.
|
||||||
|
- PMO stages TASKs in inbox-work (queued, not dispatched) and presents the
|
||||||
|
batch for approval. Exception: none. Interruption: kill at tool boundary,
|
||||||
|
record lineage SID, reconcile from logs/TODO.md.
|
||||||
|
|
||||||
|
## Shared tooling repos (org standard, 2026-08-28)
|
||||||
|
- Canonical source: /home/_crossfeed/tooling/{agent-stack,credentials,integrations}
|
||||||
|
(group users, setgid; commit via ../commit.sh <repo> "<msg>"; never secrets/
|
||||||
|
tokens/session pins/logs in git). NO founder-run scripts from /tmp ever again.
|
||||||
|
- Fix wrappers/screens in agent-stack repo + reinstall (keep `# source:` stamps).
|
||||||
|
- Offstage/COS flows: clone from tagged SHA; changes back via git bundle in
|
||||||
|
/home/_crossfeed/outbox. Runtime secrets live in ~/.coordinate/secrets/ (700).
|
||||||
|
|
||||||
|
## Dispatch v3 — quota-metered (2026-08-28, GOVERNANCE.md)
|
||||||
|
- Work-turns launch ONLY via ~/.coordinate/scripts/dispatch-turn.sh
|
||||||
|
<slug> <prompt-file> inside screen -dmS work-turn-<slug>. Semaphore-gated
|
||||||
|
(org cap; DEFER doorbell if full), FRESH session by default (small
|
||||||
|
context; turns self-bootstrap from prompt), OK/FAIL doorbells automatic.
|
||||||
|
- Long lineage sids: PMO conversations only, never work-turns.
|
||||||
|
- Capture vs execution: ideas/backlog from reachableceo land as P3 TASKs or
|
||||||
|
Redmine issues (zero quota); execution sequenced by PMO under the gate.
|
||||||
|
- Grinder pattern: big bodies of work = chunk TASKs; each completion
|
||||||
|
doorbell authorizes the next chunk dispatch. No daemons, no watchers.
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
# Wiring TSGCTO to systems of record — needs from founder
|
||||||
|
Created: 2026-08-28 | Status: AWAITING FOUNDER INPUT
|
||||||
|
|
||||||
|
Attempted discovery 2026-08-28: full sweep of /home/TSGCTO (incl. projects/,
|
||||||
|
.coordinate/) — zero references to gitea/discourse/redmine; no .gitconfig,
|
||||||
|
.ssh, or .netrc. Nothing attachable without founder input.
|
||||||
|
|
||||||
|
| System | Need | Why |
|
||||||
|
|-----------|-----------------------------------------------|-----|
|
||||||
|
| Gitea | instance URL, API token, target repo names | code + PRs; policy blocked until founder attaches remotes/creds |
|
||||||
|
| Redmine | instance URL, API key, project identifier(s) | issue/task tracking for this stack |
|
||||||
|
| Discourse | instance URL, API key, category for reports | readable status/narrative to founder |
|
||||||
|
|
||||||
|
Proposed once creds arrive:
|
||||||
|
- Store creds at ~/.config/tsgcto/ (0600), NOT in .coordinate (scratch).
|
||||||
|
- PMO writes TASKs mirroring Redmine issues; Work reports back; PMO posts
|
||||||
|
status digests to Discourse; repos cloned into ~/projects under gitea remotes.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
ed024325eccc12fd
|
||||||
@@ -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.
|
||||||
+41
@@ -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
|
||||||
+42
@@ -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.
|
||||||
+21
@@ -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
|
||||||
+16
@@ -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
|
||||||
+27
@@ -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
|
||||||
+24
@@ -0,0 +1,24 @@
|
|||||||
|
# TASK: EngStack fix queue — batch 1b (resume; QUEUED behind founder gate)
|
||||||
|
|
||||||
|
Objective: Reconcile batch 1 (interrupted mid-turn) then finish EASY queue.
|
||||||
|
1) Verify/tick TODO.md checkboxes for: flatcam, daw, gns3, streamdeck,
|
||||||
|
inkscape-ext (built+smoke-tested pre-interrupt; docker images exist).
|
||||||
|
2) stats: dockerfile edited pre-hang — build + smoke test now.
|
||||||
|
3) natron (2.5.0 asset Natron-2.5.0-Linux-x86_64-no-installer.tar.xz), wx-dev
|
||||||
|
(v4.2.1 + CA-cert fix), yosys-fpga (v-prefixed tags, boost 1.83, verify
|
||||||
|
verilator tag): edits were prepped but NOT confirmed applied — re-verify,
|
||||||
|
apply, build. Evidence trail: logs/engstack-fix1.log.
|
||||||
|
4) camotics stays SKIPPED (SCons+cbang+V8 redesign — batch 2).
|
||||||
|
|
||||||
|
Context: ~/projects/TSYSDevStack-RandD/EngStack; TODO.md fix queue;
|
||||||
|
logs/engstack-fix1.log (batch-1 narrative with per-tool findings).
|
||||||
|
|
||||||
|
Constraints: same as batch 1 (verify-before-edit; probe, never guess; no
|
||||||
|
prunes; 26 containers untouchable; 2 attempts max then skip+record).
|
||||||
|
Dispatch note (PMO): founder gate ARMED — Work executes ONLY after founder
|
||||||
|
releases. Resume lineage if desired: --session b339e9a0e2d29d8e.
|
||||||
|
|
||||||
|
Deliverable(s): REPORT-*.md per protocol: per-tool status, TODO.md ticked,
|
||||||
|
remaining queue summary.
|
||||||
|
|
||||||
|
Priority: P1
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
2026-08-28T07:02:01-05:00 | founder-channel | .coordinate created
|
||||||
|
2026-08-28T07:02:32-05:00 | TSGCTO-PMO | intro read (INTRO-PMO.md); PROTOCOL.md adopted; checklist run (inbox empty); BOARD current-focus set; online as PMO
|
||||||
|
2026-08-28T07:02:45-05:00 | TSGCTO-Work | intro read (INTRO-WORK.md); PROTOCOL.md adopted; checklist run (inbox-work empty); online as Work, REPORT-ready posted
|
||||||
|
2026-08-28T07:14:56-05:00 | TSGCTO-PMO | wrote /tmp/tsgcto-move-projects.sh for founder (moves football, CHipBench, TSYSDevStack-RandD to /home/TSGCTO/projects, chowns TSGCTO)
|
||||||
|
2026-08-28T07:16:53-05:00 | TSGCTO-PMO | founder ran move script: football, ChipBench, TSYSDevStack-RandD now in /home/TSGCTO/projects; final ls in script failed only due to /home/TSGCTO being 750 from reachableceo view; verified + chowned OK from TSGCTO side
|
||||||
|
2026-08-28T07:17:26-05:00 | TSGCTO-PMO | removed /tmp/tsgcto-move-projects.sh (migration done, script no longer needed)
|
||||||
|
2026-08-28T07:18:46-05:00 | TSGCTO-PMO | founder wants gitea/discourse/redmine wired; swept home dir, found no URLs/creds; wrote needs list to .coordinate/WIRING-SOR.md, awaiting founder input
|
||||||
|
2026-08-28T07:22:56-05:00 | TSGCTO-PMO | ingested CTOHandoff.md (copied to .coordinate); verified disk 95%/26 containers/42.7GB dangling cache; wrote TASK-20260828-0722-engstack-disk-reclaim (P1); BOARD updated
|
||||||
|
2026-08-28T07:24:32-05:00 | TSGCTO-PMO | founder: CTO/COO parallel lanes thru 1/1, COO prerequisites (k8s, Jenkins@Cloudron) gate CTO steps; COO=TSGCOO user owns PFVCluster+SupportStack-Cloudron; COO PMO runs on-system; BOARD org context added; Work online (REPORT-ready.md)
|
||||||
|
2026-08-28T07:26:48-05:00 | TSGCTO-Work | TASK engstack-disk-reclaim done: builder prune -f reclaimed 42.58GB cache, / 95%->80% (14G->53G free), 26 containers intact; free 19.3%<20% so QUESTION-disk-next-steps filed; TASK archived
|
||||||
|
2026-08-28T07:27:25-05:00 | TSGCTO-PMO | founder: no CEO by design; officers CTO/CCO/COO report to BOD; BOARD org context corrected; crossfeed proposal stands (dirs: bod/cto/cco/coo), BOD=subscriber not transport
|
||||||
|
2026-08-28T07:30:02-05:00 | TSGCTO-PMO | wrote /tmp/tsg-crossfeed-setup.sh for founder: creates /home/_crossfeed{bod,cto,cco,coo} + README, drops NOTICE into each vertical .coordinate + inbox-pmo, pings *-PMO screens; parser dry-tested on own user
|
||||||
|
2026-08-28T07:34:03-05:00 | TSGCTO-PMO | crossfeed script rewritten preflight/execute/verify + confirm gate (syntax OK); sudo -u password bug fixed via sudo runuser; -d traversal bug fixed via sudo test; founder pref: preflight-before-mutation on all ops -> PREFS-founder.md
|
||||||
|
2026-08-28T07:36:56-05:00 | TSGCTO-PMO | crossfeed script: added sbin PATH (runuser exists at /sbin) + su fallback via as_user; Debian13 noted; disk reclaim step1 DONE by Work (+39G, 95->80pct, containers safe); dispatching step2 TASK (stale builder cache >7d) per QUESTION decision
|
||||||
|
2026-08-28T07:38:40-05:00 | TSGCTO-Work | TASK disk-reclaim-stale-cache done: builder prune -a --filter until=168h reclaimed 8.786GB, / 80%->78% (53G->59G free, 21.5% >= 20% bar), 26 containers intact; REPORT posted, TASK archived
|
||||||
|
2026-08-28T07:39:08-05:00 | TSGCTO-PMO | crossfeed ADOPTED (PROTOCOL.md appended); first STATUS.md published to /home/_crossfeed/cto/; notices archived; Work step2 report verified+archived (disk sequence COMPLETE: / at 78%, 21.5% free)
|
||||||
|
2026-08-28T07:50:29-05:00 | TSGCTO-PMO | read COO PATTERN-agent-orchestration.md via crossfeed; ADOPTED doorbell-only stuff rule (PROTOCOL.md); dispatch v2 (headless --session + completion ping + serialization) staged awaiting founder go; peer statuses read (BOD/CCO idle, COO deep in #465 radios)
|
||||||
|
2026-08-28T07:50:43-05:00 | TSGCTO-PMO | adopted COO dispatch v2 doorbell rule (confirmed founder worked with COO on PATTERN doc); awaiting founder go: dispatch v2 migration + EngStack build-fix TASK batch
|
||||||
|
2026-08-28T07:53:20-05:00 | TSGCTO-PMO | founder GO: dispatch v2 LIVE (ping-pmo.sh helper, PROTOCOL updated, old Work screen retired-from-dispatch); TASK-20260828-0753 engstack fix batch1 (EASY) dispatched headless as work-turn-engstack-fix1; completion doorbell will wake PMO; lineage SID capture on completion
|
||||||
|
2026-08-28T09:04:41-05:00 | TSGCTO-PMO | work-turn-engstack-fix1 was HUNG (log silent 22min) - killed per founder quota stop: 5 fixed (flatcam,daw,gns3,streamdeck,inkscape-ext), 1 skipped (camotics, SCons rebuild needed), stats edit landed pre-hang, natron/wx-dev/yosys prepped-not-built; TODO checkboxes unticked (bookkeeping pending); lineage SID b339e9a recorded for batch-1b resume
|
||||||
|
2026-08-28T09:05:25-05:00 | TSGCTO-PMO | founder gate SELF-ADOPTED (direct founder directive, not COO relay): no work-turn dispatch without explicit founder release; TASKs staged queued-only
|
||||||
|
2026-08-28T09:50:17-05:00 | TSGCTO-PMO | wrote /tmp/tsg-pmo-autorelaunch.sh: pmo-loop.sh wrapper (auto-relaunch, RELAUNCH-FRESH one-shot, PMO-SESSION-ID pin, 60s backoff) for all 4 verticals; recreates *-PMO screens under wrapper w/ preflight+confirm
|
||||||
|
2026-08-28T09:54:18-05:00 | TSGCTO-PMO | stack relaunch script staged (/tmp/tsg-stack-relaunch.sh): wrappers pmo+work, canonical <U>-PMO/<U>-Work names (TSGCOO-Crush retired), session auto-pin heuristic, multiuser+acl, notices; CTO pins pre-set (2fb8da551ae30c24/ed024325eccc12fd); combined COO-PMO resume prompt at /tmp/COO-PMO-RESUME.md (RCEO wiring + /tmp sweep to _crossfeed/archive)
|
||||||
|
2026-08-28T10:54:58-05:00 | TSGCTO-PMO | reachableceo pref: call him reachableceo/Charles, NEVER "the founder" (creepy). Existing boot units found: tsg-agent-stacks.service -> /home/reachableceo/launch-all-tsg-stacks.sh (unreadable, legacy pattern, would undo wrappers+names on reboot); reachableceo-agent-stack.service -> /usr/local/sbin/launch-rceo-stack.sh (canonical RCEO-PMO/RCEO-Work, respawn+intro-inject, boot-safe). COS: no discoverable account on this host (TSGCTPO home orphaned uid 1004, no passwd match) - asked Charles for account/host
|
||||||
|
2026-08-28T10:59:45-05:00 | TSGCTO-PMO | COS pkg fixed up per reachableceo: v2 tgz in outbox (wrapper auto-relaunch, pins, firstboot-only injection); NOTE-from-CTO-cos-v2.md left for COO; deltas logged
|
||||||
|
2026-08-28T11:04:42-05:00 | TSGCTO-PMO | pre-relaunch checkpoint: crossfeed STATUS rewritten; all state on disk (BOARD/PROTOCOL/PREFS/pins/log/prompts); session will resume via pin 2fb8da551ae30c24 after wrapper respawn
|
||||||
|
2026-08-28T11:06:16-05:00 | TSGCTO-PMO | relaunch script bug fixed (preflight used shell builtin via runuser exec; wrapped in bash -c; wrapper PATH hardened)
|
||||||
|
2026-08-28T11:57:17-05:00 | TSGCTO-PMO | REORIENTED to tooling-canonical world: ingested founder/ STATUS+NOTICE + tooling READMEs + relaunch-v2 (v1 kill bug root-caused: root-side quit hit wrong socket dir); installed wrapper verified == canonical; safe.directory set for 3 repos; PROTOCOL amended (no /tmp scripts, commit.sh, bundles); SoR unblock path = founder channel per credentials README
|
||||||
|
2026-08-28T12:02:42-05:00 | TSGCTO-PMO | relaunch v2.1 committed to agent-stack (70cb27e): RCEO hard-guard, pin repair (original PMO-intro/INTRO-WORK sid), reorient doorbell post-respawn; RCEO off-limits per reachableceo; authorized to operate TSGCTO/COO/CCO/BOD stacks
|
||||||
|
2026-08-28T15:05:14-05:00 | TSGCTO-PMO | reorient checklist done post-v2.1 relaunch (15:04, PINNED resume ok): notices archived, founder/ dir adopted into PROTOCOL+BOARD, roster updated (reachableceo/Charles; RCEO off-limits), batch-1 TASK archived, batch-1b TASK staged QUEUED behind gate; peers: BOD oriented+canonical, CCO STATUS stale (doorbelled by v2.1, should publish), COO pin-repair outcome TBD in their next STATUS
|
||||||
|
2026-08-28T15:16:31-05:00 | TSGCTO-PMO | quota infra committed (155c6d7): semaphore+metrics+supervisor+dispatch-turn+GOVERNANCE; dispatcher rc bug fixed+re-dispatched crush-spike (running ungated until installer run); offstage kit tarred to outbox w/ NOTE; PROTOCOL dispatch v3 added
|
||||||
|
2026-08-28T15:20:12-05:00 | TSGCTO-Work | SPIKE crush-server done: gateway/db service only, no server-side session hosting, auth-less /tmp socket -> NOT a screen replacement; report in inbox-pmo/SPIKE-crush-server.md; test server killed + scratch removed
|
||||||
|
2026-08-28T15:20:36-05:00 | TSGCTO-PMO | crush-spike VERDICT (Work): server = client-API gateway + sqlite store, turns execute CLIENT-side (no server-side hosting), auth-less /tmp socket, SPOF -> NOT viable as screen replacement; KEEP dispatch v2/v3 (self-healing screens); revisit triggers logged in archive/SPIKE-crush-server.md
|
||||||
|
2026-08-28T15:53:55-05:00 | TSGCTO-PMO | PRODUCTION on ultix-streaming: quota infra live (metrics 2775, semaphore gated 0/2, supervisor timer ticking, alerts all-quiet, dispatchers org-wide, relaunch v2.3 done); metrics harvester fixed to session-show (7e1ddd2), ledger reset for clean first real tick; REMAINING for 22:00: offstage kit install (outbox) + first tick verification + peer STATUS confirmation
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
2026-08-28T15:14:41-05:00 no semaphore slot after 300s - not launched
|
||||||
|
2026-08-28T15:15:41-05:00 semaphore gate unavailable - proceeding UNGATED (install metrics dirs)
|
||||||
|
Checklist done. Batch-1b TASK is gated/queued — not my scope. Starting the `crush server` spike.UID 1005 matches the default socket name; no live server. Starting test instance on scratch socket.Server is live on scratch socket. Probing protocol and client attach.HTTP/1.1 with Go's default 404 mux. Hunting route paths.Client `run` over the socket works. Identifying the gRPC service surface.Session persisted server-side in scratch dir. Now testing process ownership + survival across client disconnect.pgrep matched my own turn process — re-checking against real server PID 2579443.Key finding: tool processes (`sleep 20`) parent to the **client**, not the server. Testing client-disconnect behavior.Server hit its 90s timeout mid-test. Restarting with longer window for a clean disconnect test.Session turn completed client-side before my kill (TERM was ignored). Checking debug log + session subcommands for any server-side execution feature.Local evidence sufficient. Quick doc check for authoritative server description.Evidence complete. Cleaning up test instance and scratch dirs.Cleanup verified (remaining matches are my own turn's dispatch screen — untouched). Writing report.Spike done: `crush server` is only a gateway/db service (tool exec + agent loop stay client-side; auth-less 0755 /tmp socket) → NOT a screen replacement today; findings + verdict in inbox-pmo/SPIKE-crush-server.md, test instance killed and scratch cleaned.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Flatcam: verify the `Beta` branch exists, then add `git` to apt install.Branch `Beta` 404s. Checking repo branches:Repo itself is gone. Checking alternatives — canonical FlatCAM 8.99 beta lives on Bitbucket:GitHub repo is dead; canonical 8.99 beta lives on Bitbucket (jpcgt/flatcam). Verifying the `Beta` branch there:`Beta` branch confirmed at Bitbucket. Applying fix (add `git`, switch clone URL):While flatcam builds, prepping camotics:Camotics: tag is `v1.2.0` (not `release/1.2.0`), and `libbotan-2-dev` exists on 24.04. Checking flatcam build, then editing camotics:flatcam:core built. Smoke test + camotics edit:Camotics building. Prepping daw:`jackd2` confirmed. Editing daw (build queued after camotics):GNS3 findings: dynamips tag is `v0.2.23` (v-prefix), ubridge `0.9.92` doesn't exist (0.9.x line ends at `v0.9.19`), `iouyap` confirmed missing, `vpcs` OK. Editing:camotics clone failed: no `ca-certificates` in builder (ubuntu:24.04 + `--no-install-recommends`). Attempt 2:Prepping streamdeck while camotics builds:Probing the actual streamdeck pip failure in a throwaway trixie container:Real root cause: streamdeck-ui versions cap below 3.1.0 on Python 3.13. Checking PyPI:PyPI caps at 2.0.15 with `Requires-Python <3.12` — TODO's Pillow diagnosis is wrong; trixie's Python 3.13 can't satisfy it. Checking the GitHub 3.1.0 release referenced by the Dockerfile:streamdeck-ui: no GitHub releases, PyPI caps at 2.0.15 requiring Python <3.12 (upstream abandoned 2023). TODO note is wrong. Checking camotics, then trying streamdeck attempt 1:Clone works now, but no CMakeLists.txt at repo root for v1.2.0. Inspecting the tag's tree:v1.2.0 uses SConstruct (SCons), not CMake. Checking if v1.3.0 has CMakeLists.txt:No CMake in any CAMotics release — project builds with SCons. Checking README build instructions:CAMotics needs a full SCons+cbang+V8 two-stage build — the cmake recipe is fundamentally wrong. 2 attempts spent → SKIPPED (recorded). Moving on: daw build.Prepping inkscape-ext while daw builds:inkstitch v3.3.0 asset confirmed: `inkstitch-3.3.0-linux-x86_64.tar.xz`. Editing inkscape-ext:daw:core ✓. Building gns3:Prepping stats + natron + wx-dev + yosys-fpga while gns3 builds:Natron: no 2.6.0 — latest is 2.5.0 with asset `Natron-2.5.0-Linux-x86_64-no-installer.tar.xz`. RStudio: current is 2026.08.2-200 with a unified deb for Debian 13. Verifying exact URL:Probing RStudio deb URL candidates:Extracting the direct RStudio deb URL via agentic fetch:URL valid (binary response = 200). Updating stats dockerfile; checking gns3:Same CA-cert gap in gns3 builder. Fixing and rebuilding:Streamdeck attempt 1 probe — force-install on trixie py3.13:Pillow wheel build fails on 3.13 as expected. Attempt 2: switch to ubuntu:22.04 (py3.10). Probing packages:Packages OK. Full pip validation on jammy before committing attempt 2:evdev needs to compile (sdist). Validating with build deps present:Install succeeds on jammy with build deps. Editing streamdeck dockerfile:gns3:core ✓. Smoke test + streamdeck build:Prepping wx-dev + yosys-fpga:wx-dev: `v4.2.1` exists — real issue is again missing `ca-certificates` in builder. yosys: tags are `v`-prefixed (latest v0.68). Probing trixie boost version for yosys runtime:Trixie boost 1.83 ✓ for yosys. streamdeck: jammy's pip lacks `--break-system-packages` — removing flag:wx-dev + yosys edits; verifying verilator tag too:streamdeck:core ✓. Smoke test + inkscape-ext build:Expected headless warning only — works. Building inkscape-ext:Runtime stage needs `xz-utils`. Fixing:Extract works; `rm` fails since COPY'd file is root-owned under USER eng. Dropping the rm:inkscape-ext:core ✓. Smoke test + stats build:
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
2026-08-28T11:13:13-05:00 relaunch PINNED 2fb8da551ae30c24
|
||||||
|
2026-08-28T11:29:41-05:00 relaunch PINNED 2fb8da551ae30c24
|
||||||
|
2026-08-28T11:45:07-05:00 relaunch PINNED 2fb8da551ae30c24
|
||||||
|
2026-08-28T15:04:06-05:00 relaunch PINNED 2fb8da551ae30c24
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
2026-08-28T11:13:13-05:00 relaunch PINNED ed024325eccc12fd
|
||||||
|
2026-08-28T11:29:41-05:00 relaunch PINNED ed024325eccc12fd
|
||||||
|
2026-08-28T11:45:07-05:00 relaunch PINNED ed024325eccc12fd
|
||||||
|
2026-08-28T15:04:06-05:00 relaunch PINNED ed024325eccc12fd
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
INTRODUCTION / ORGANIZATION UPDATE (from founder, 2026-08-28)
|
||||||
|
|
||||||
|
You are TSGCTO-PMO — the manager of the TSGCTO stack. You now have a
|
||||||
|
direct report: TSGCTO-Work (screen session named TSGCTO-Work), a
|
||||||
|
separate crush instance running as the same TSGCTO user in /home/TSGCTO.
|
||||||
|
I (the founder, reachableceo) interact with you day-to-day; I talk to
|
||||||
|
TSGCTO-Work only occasionally. You drive it; it does not drive you.
|
||||||
|
|
||||||
|
COORDINATION CHANNEL: ~/.coordinate is your local, non-git scratch channel
|
||||||
|
with TSGCTO-Work — routine agent-to-agent coordination costs a local file
|
||||||
|
write, not a network round trip. Read ~/.coordinate/PROTOCOL.md and follow
|
||||||
|
it exactly: you write TASK files to inbox-work/, consume REPORT/QUESTION/
|
||||||
|
BLOCKED from inbox-pmo/, maintain BOARD.md and log.md.
|
||||||
|
|
||||||
|
CAPABILITIES (headless workers + sub-agents):
|
||||||
|
- You run as TSGCTO (HOME=/home/TSGCTO, NO sudo by design; root needs go
|
||||||
|
to the founder). You MAY spawn headless task workers without sudo:
|
||||||
|
env HOME=/home/TSGCTO TERM=xterm-256color screen -dmS <slug> bash -c \
|
||||||
|
'cd /home/TSGCTO && crush run --quiet "$(cat /path/to/prompt.md)"' \
|
||||||
|
> /home/TSGCTO/.coordinate/logs/<slug>.log 2>&1
|
||||||
|
Monitor workers by READING that log file — never attach to their screens,
|
||||||
|
never leave watchers/polling loops running; check on your next turn.
|
||||||
|
- Use crush sub-agent tooling instead of long sequential exploration.
|
||||||
|
|
||||||
|
SCOPE LIMITS (founder policy): NO repositories, git remotes, or SSH
|
||||||
|
credentials are attached to this account by design. Do not clone/init/push
|
||||||
|
repos or attempt SSH or git network operations — that work is reserved for
|
||||||
|
other stacks and founder direction. Durable artifacts stay in
|
||||||
|
~/.coordinate until the founder attaches systems of record; flag any TASK
|
||||||
|
that needs them.
|
||||||
|
|
||||||
|
TOKEN DISCIPLINE: terse by default (<=5 line replies to me unless asked
|
||||||
|
for detail); never restate task/report text in replies — cite file paths;
|
||||||
|
batch file reads; never paste large files into conversation; write
|
||||||
|
findings to ~/.coordinate files and reference them.
|
||||||
|
|
||||||
|
ABOUT TSGCTO-Work: it is a headless loop orchestrator — expect one-line
|
||||||
|
chat replies from it; its substantive output lands in inbox-pmo REPORT
|
||||||
|
files. You (PMO) are where the founder lives day-to-day, so you own
|
||||||
|
readable status and narrative.
|
||||||
|
|
||||||
|
RULES: You plan, prioritize, write TASKs; TSGCTO-Work executes. Start
|
||||||
|
every turn with the PROTOCOL.md checklist (BOARD.md, your inbox, log.md
|
||||||
|
tail). You hold NO sudo. No watchers/polling loops. If
|
||||||
|
~/.coordinate/PROTOCOL.md is ever missing, tell the founder; do not
|
||||||
|
improvise a replacement layout.
|
||||||
|
|
||||||
|
NOW: read PROTOCOL.md, append your intro line to log.md, set BOARD.md
|
||||||
|
current-focus, then greet the founder in 5 lines max. Then wait.
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
INTRODUCTION (from founder, 2026-08-28)
|
||||||
|
|
||||||
|
You are TSGCTO-Work (screen session TSGCTO-Work) — the LOOP ORCHESTRATOR
|
||||||
|
of the TSGCTO stack, running 99% headless. Humans almost never talk to you
|
||||||
|
directly. TSGCTO-PMO (a separate crush instance, same TSGCTO user) is
|
||||||
|
your manager and drives you via ~/.coordinate TASK files and screen pings;
|
||||||
|
the founder (reachableceo) is final authority and drops in only rarely.
|
||||||
|
|
||||||
|
OUTPUT MODEL: your chat replies are MINIMAL (one-liners). Your real output
|
||||||
|
is VERBOSE and lives in ~/.coordinate REPORT files until the founder
|
||||||
|
attaches systems of record. Never dump detail into chat that belongs in a
|
||||||
|
file.
|
||||||
|
|
||||||
|
YOUR LOOP — on every ping or message, before anything else:
|
||||||
|
1. Read ~/.coordinate/BOARD.md, scan inbox-work/ for TASK files (P1 first;
|
||||||
|
CANCEL drops a task), tail log.md.
|
||||||
|
2. Execute TASKs. Dispatch parallelizable subtasks as headless workers:
|
||||||
|
env HOME=/home/TSGCTO TERM=xterm-256color screen -dmS <slug> bash -c \
|
||||||
|
'cd /home/TSGCTO && crush run --quiet "$(cat /path/to/prompt.md)"' \
|
||||||
|
> /home/TSGCTO/.coordinate/logs/<slug>.log 2>&1
|
||||||
|
Monitor by reading that log; verify worker output before reporting done.
|
||||||
|
3. Reply via inbox-pmo/ (REPORT with evidence: file paths / QUESTION /
|
||||||
|
BLOCKED), archive the TASK, append one line to log.md.
|
||||||
|
|
||||||
|
COORDINATION CHANNEL: ~/.coordinate is local non-git scratch between you
|
||||||
|
and the PMO. Read ~/.coordinate/PROTOCOL.md and follow it.
|
||||||
|
|
||||||
|
SCOPE LIMITS (founder policy): NO repositories, git remotes, or SSH
|
||||||
|
credentials are attached to this account by design. Do not clone/init/push
|
||||||
|
repos or attempt SSH or git network operations. If a TASK requires them,
|
||||||
|
reply BLOCKED with the reason.
|
||||||
|
|
||||||
|
RULES: You never self-assign scope — work arrives via inbox-work/ (suggest
|
||||||
|
ideas via QUESTION). Empty inbox when pinged = one line saying so, stop.
|
||||||
|
No watchers/polling loops. You hold NO sudo — root needs go BLOCKED to the
|
||||||
|
PMO. Shared account with TSGCTO-PMO: never kill its screen, no long
|
||||||
|
locks. If ~/.coordinate/PROTOCOL.md is missing, say so and wait — do not
|
||||||
|
recreate.
|
||||||
|
|
||||||
|
NOW: read PROTOCOL.md, append your intro line to log.md, post
|
||||||
|
inbox-pmo/REPORT-ready.md ("TSGCTO-Work online, awaiting first TASK").
|
||||||
|
Reply in chat with one line only. Then wait for pings.
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
You are TSGCTO-Work executing a headless RESEARCH turn for the TSGCTO vertical.
|
||||||
|
1) Read ~/.coordinate/PROTOCOL.md (dispatch/checklist sections) + BOARD.md.
|
||||||
|
2) TASK: spike `crush server` (crush v0.87) as a possible replacement for
|
||||||
|
screen+TUI orchestration. Answer, with evidence:
|
||||||
|
a) `crush server --help` — flags, socket path, protocol (gRPC? HTTP? REST?).
|
||||||
|
b) Start it briefly on a TEST socket (`--data-dir` pointed at a scratch
|
||||||
|
dir under /tmp — NOT your real data dir), list what it exposes; kill it.
|
||||||
|
c) Can a client `-H unix://...` attach/run sessions non-interactively?
|
||||||
|
d) Does it keep sessions alive server-side (no per-client pty)?
|
||||||
|
e) Verdict: is it production-viable TODAY for replacing screens as the
|
||||||
|
agent process layer? Risks (auth, resource use, single point of
|
||||||
|
failure, multi-user story on one host)?
|
||||||
|
3) CONSTRAINTS: read-only toward production state (no changes to real
|
||||||
|
sessions/screens/wrapper installs); test server instance must be killed
|
||||||
|
and scratch dir removed before you finish; timeout-wrap everything.
|
||||||
|
4) Output: ~/.coordinate/inbox-pmo/SPIKE-crush-server.md with findings +
|
||||||
|
verdict + a migration sketch if viable. One-line chat reply only.
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
You are TSGCTO-Work executing a headless dispatch turn (dispatch v2) for the TSGCTO vertical.
|
||||||
|
1) Read ~/.coordinate/PROTOCOL.md and ~/.coordinate/BOARD.md fully; tail ~/.coordinate/log.md.
|
||||||
|
2) Execute the TASK below per protocol (respect constraints; REPORT to ~/.coordinate/inbox-pmo/; archive the TASK; append log line).
|
||||||
|
3) Headless turn: when done, file the REPORT and exit. No watchers, no loops.
|
||||||
|
|
||||||
|
--- TASK ---
|
||||||
|
# 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
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# source: /home/_crossfeed/tooling/agent-stack @ HEAD
|
||||||
|
# dispatch-turn.sh <slug> <prompt-file> — headless work-turn launcher.
|
||||||
|
# Semaphore-gated (org concurrency cap), FRESH session by default (small
|
||||||
|
# context = quota-friendly; the turn self-bootstraps from the prompt file),
|
||||||
|
# success/fail doorbell to the vertical PMO screen. PMO usage:
|
||||||
|
# screen -dmS work-turn-<slug> \
|
||||||
|
# ~/.coordinate/scripts/dispatch-turn.sh <slug> <prompt-file>
|
||||||
|
set -uo pipefail
|
||||||
|
|
||||||
|
SLUG=${1:?slug}; PROMPT=${2:?prompt-file}
|
||||||
|
TOOLING=${TOOLING:-/home/_crossfeed/tooling}
|
||||||
|
SEMI="$TOOLING/agent-stack/semaphore.sh"
|
||||||
|
LOG="$HOME/.coordinate/logs/$SLUG.log"
|
||||||
|
TAG="$USER-$SLUG"
|
||||||
|
WAIT=${WAIT_SECS:-300}
|
||||||
|
|
||||||
|
[ -f "$PROMPT" ] || { echo "no prompt file: $PROMPT" >&2; exit 1; }
|
||||||
|
|
||||||
|
semirc=0
|
||||||
|
bash "$SEMI" try "$TAG" "$WAIT" >/dev/null 2>&1 || semirc=$?
|
||||||
|
if [ "$semirc" = 99 ]; then
|
||||||
|
echo "$(date -Is) semaphore gate unavailable - proceeding UNGATED (install metrics dirs)" >> "$LOG"
|
||||||
|
elif [ "$semirc" != 0 ]; then
|
||||||
|
echo "$(date -Is) semaphore rc=$semirc after ${WAIT}s budget - not launched" >> "$LOG"
|
||||||
|
screen -S "${USER}-PMO" -X stuff "$(printf 'Work turn DEFERRED (concurrency cap) - rerun later: %s.\r' "$SLUG")" || true
|
||||||
|
exit 3
|
||||||
|
fi
|
||||||
|
GATED=1; [ "$semirc" = 0 ] || GATED=0
|
||||||
|
|
||||||
|
cd "$HOME"
|
||||||
|
rc=0
|
||||||
|
env HOME="$HOME" TERM=xterm-256color \
|
||||||
|
crush run --quiet "$(cat "$PROMPT")" >> "$LOG" 2>&1 || rc=$?
|
||||||
|
|
||||||
|
bash "$SEMI" release "$TAG" >/dev/null 2>&1 || true
|
||||||
|
|
||||||
|
if [ "$rc" = 0 ]; then
|
||||||
|
screen -S "${USER}-PMO" -X stuff "$(printf 'Work turn done OK - read inbox-pmo + logs/%s.\r' "$SLUG")" || true
|
||||||
|
else
|
||||||
|
screen -S "${USER}-PMO" -X stuff "$(printf 'Work turn FAILED (rc=%s) - read logs/%s.\r' "$rc" "$SLUG")" || true
|
||||||
|
fi
|
||||||
|
exit "$rc"
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
screen -S TSGCTO-PMO -X stuff "$(printf 'Work turn done - read inbox-pmo + log.\r')"
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# pmo-loop.sh [pmo|work] — keep a crush session alive inside its screen.
|
||||||
|
ROLE="${1:-pmo}"
|
||||||
|
case "$ROLE" in
|
||||||
|
pmo) FRESH="$HOME/.coordinate/RELAUNCH-FRESH"; PIN="$HOME/.coordinate/PMO-SESSION-ID" ;;
|
||||||
|
work) FRESH="$HOME/.coordinate/RELAUNCH-FRESH-WORK"; PIN="$HOME/.coordinate/WORK-SESSION-ID" ;;
|
||||||
|
*) echo "usage: $0 [pmo|work]" >&2; exit 1 ;;
|
||||||
|
esac
|
||||||
|
LOG="$HOME/.coordinate/logs/${ROLE}-relaunch.log"
|
||||||
|
LEDGER=/home/_crossfeed/metrics/launches.jsonl
|
||||||
|
ledger() { printf '%s\n' "$1" >> "$LEDGER" 2>/dev/null || true; }
|
||||||
|
cd "$HOME"
|
||||||
|
export TERM="${TERM:-xterm-256color}"
|
||||||
|
export PATH="$HOME/.local/bin:/usr/local/bin:/usr/bin:/bin:$PATH"
|
||||||
|
while true; do
|
||||||
|
started=$(date +%s)
|
||||||
|
mode=continue
|
||||||
|
if [ -f "$FRESH" ]; then
|
||||||
|
rm -f "$FRESH"
|
||||||
|
mode=fresh
|
||||||
|
echo "$(date -Is) relaunch FRESH" >> "$LOG"
|
||||||
|
crush --yolo
|
||||||
|
elif [ -s "$PIN" ]; then
|
||||||
|
sid=$(cat "$PIN")
|
||||||
|
mode=pinned:$sid
|
||||||
|
echo "$(date -Is) relaunch PINNED $sid" >> "$LOG"
|
||||||
|
crush --yolo --session "$sid"
|
||||||
|
else
|
||||||
|
echo "$(date -Is) relaunch CONTINUE" >> "$LOG"
|
||||||
|
crush --yolo --continue
|
||||||
|
fi
|
||||||
|
rc=$?
|
||||||
|
rt=$(( $(date +%s) - started ))
|
||||||
|
ledger "{\"ts\":\"$(date -Is)\",\"user\":\"$USER\",\"role\":\"$ROLE\",\"mode\":\"$mode\",\"rc\":$rc,\"runtime_s\":$rt}"
|
||||||
|
if [ "$rt" -lt 60 ]; then
|
||||||
|
echo "$(date -Is) short run (${rt}s rc=$rc) - backoff 60s" >> "$LOG"
|
||||||
|
sleep 60
|
||||||
|
else
|
||||||
|
sleep 2
|
||||||
|
fi
|
||||||
|
done
|
||||||
@@ -78,3 +78,4 @@
|
|||||||
2026-08-29T05:06:13-05:00 | PMO | WRAP for crush update: snapshot #6 written (STATE-SNAPSHOT-20260829-0530.md); chain self-sufficient (q9 on 5.2 -> flash gates); heartbeat 1h; relaunch screen as RCEO-PMO
|
2026-08-29T05:06:13-05:00 | PMO | WRAP for crush update: snapshot #6 written (STATE-SNAPSHOT-20260829-0530.md); chain self-sufficient (q9 on 5.2 -> flash gates); heartbeat 1h; relaunch screen as RCEO-PMO
|
||||||
2026-08-29T05:18:52-05:00 | PMO | MAX PLAN: quota reset; default model back to glm-5.2; pdf turn dispatched parallel (q13); snapshot amended
|
2026-08-29T05:18:52-05:00 | PMO | MAX PLAN: quota reset; default model back to glm-5.2; pdf turn dispatched parallel (q13); snapshot amended
|
||||||
2026-08-29T05:20:40-05:00 | PMO | language policy tiered: rust ok / python avoid-but-ok in supply chain / node last-resort + consult Charles (workers must stop-and-ask)
|
2026-08-29T05:20:40-05:00 | PMO | language policy tiered: rust ok / python avoid-but-ok in supply chain / node last-resort + consult Charles (workers must stop-and-ask)
|
||||||
|
2026-08-29T05:24:29-05:00 | PMO | tickets 490-499 fleshed (objective/background/scope/acceptance/status structure); mopac-pmo repo live on Gitea, 7 atomic commits pushed; commit+push-as-we-go now standing practice
|
||||||
|
|||||||
+1
-1
@@ -4,4 +4,4 @@
|
|||||||
Failed to override models: large model: model "glm-5.2" found in multiple providers: litellm and zai. Please specify
|
Failed to override models: large model: model "glm-5.2" found in multiple providers: litellm and zai. Please specify
|
||||||
provider using 'provider/model' format.
|
provider using 'provider/model' format.
|
||||||
|
|
||||||
I have the family patterns. Setting up the task list and starting.
|
I have the family patterns. Setting up the task list and starting.Typst stdin→stdout works. Testing image resolution with stdin input:
|
||||||
+1
-1
@@ -5,4 +5,4 @@ Tickets confirmed. Now researching the z.ai usage API surface.
|
|||||||
Agent processing failed: failed to start agent processing stream: failed to fetch URL: Post
|
Agent processing failed: failed to start agent processing stream: failed to fetch URL: Post
|
||||||
"https://sourcegraph.com/.api/graphql": context deadline exceeded (Client.Timeout exceeded while awaiting headers).
|
"https://sourcegraph.com/.api/graphql": context deadline exceeded (Client.Timeout exceeded while awaiting headers).
|
||||||
|
|
||||||
Codebase understood. Now researching the z.ai usage endpoint.Documented findings: coding plan has 5-hour + weekly credit buckets; **peak hours = Mon–Fri 14:00–18:00 SGT ≈ 01:00–05:00 CST** (Charles's guess confirmed). No documented usage REST endpoint — probing for the undocumented one with a real key.Gateway responds under `/api/coding/*` but no public usage route. One final probe batch, plus checking LiteLLM's own documented spend API (master key in container env):Research complete. Now checking dev workflow, git state, and test conventions before writing code.All context gathered. Checking the TOML subset parser's number handling before writing the config surface:Writing the implementation now — config surface first:Now the `[quota]` + `[resources]` config structs:Now the `internal/quota` package — snapshot + parser:Estimator + schedule:Resource monitor (ticket 491):Shared state — minimal stdlib RESP client:Usage poller:The decision gate:Loop integration — the gate wiring:Now wire the gate into the Conductor struct and daemon flow:Now the daemon: gate consultation before dispatch, usage recording after turn, startup status line. Also state.go extensions:Now add usage aggregation to `loopState`:Now the CLI `harness quota` subcommand:Adding an exported usage accessor in the loop package, then the CLI:Now the CLI subcommand in main.go:Now the test suite — quota package first:Resources + fake-redis tests:Config load test + loop integration tests:Extend the fakeRedmine fixture with per-issue classes:
|
Codebase understood. Now researching the z.ai usage endpoint.Documented findings: coding plan has 5-hour + weekly credit buckets; **peak hours = Mon–Fri 14:00–18:00 SGT ≈ 01:00–05:00 CST** (Charles's guess confirmed). No documented usage REST endpoint — probing for the undocumented one with a real key.Gateway responds under `/api/coding/*` but no public usage route. One final probe batch, plus checking LiteLLM's own documented spend API (master key in container env):Research complete. Now checking dev workflow, git state, and test conventions before writing code.All context gathered. Checking the TOML subset parser's number handling before writing the config surface:Writing the implementation now — config surface first:Now the `[quota]` + `[resources]` config structs:Now the `internal/quota` package — snapshot + parser:Estimator + schedule:Resource monitor (ticket 491):Shared state — minimal stdlib RESP client:Usage poller:The decision gate:Loop integration — the gate wiring:Now wire the gate into the Conductor struct and daemon flow:Now the daemon: gate consultation before dispatch, usage recording after turn, startup status line. Also state.go extensions:Now add usage aggregation to `loopState`:Now the CLI `harness quota` subcommand:Adding an exported usage accessor in the loop package, then the CLI:Now the CLI subcommand in main.go:Now the test suite — quota package first:Resources + fake-redis tests:Config load test + loop integration tests:Extend the fakeRedmine fixture with per-issue classes:First build pass to catch compile errors:
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
INTRODUCTION (from founder, 2026-08-28)
|
||||||
|
|
||||||
|
You are reachableceo-PMO — manager of this stack. Direct report:
|
||||||
|
reachableceo-Work (screen RCEO-Work), a crush instance as the same user.
|
||||||
|
The founder (reachableceo) interacts with you day-to-day and observes Work
|
||||||
|
READ-ONLY; all founder writes happen here with you.
|
||||||
|
|
||||||
|
Read ~/.coordinate/PROTOCOL.md and follow it exactly: TASK files to
|
||||||
|
inbox-work/, consume REPORT/QUESTION/BLOCKED from inbox-pmo/, maintain
|
||||||
|
BOARD.md + log.md. Dispatch = headless crush-run wrappers (PROTOCOL);
|
||||||
|
never dispatch without the FOUNDER GATE. Monitor headless turns by reading
|
||||||
|
logs/, never by attaching.
|
||||||
|
|
||||||
|
CAPABILITIES: no sudo (root needs go to the founder). Headless workers:
|
||||||
|
env HOME=/home/reachableceo TERM=xterm-256color screen -dmS <slug> bash -c \
|
||||||
|
'crush run --quiet "$(cat /path/to/prompt.md)"' \
|
||||||
|
> /home/reachableceo/.coordinate/logs/<slug>.log 2>&1
|
||||||
|
Use crush sub-agent tooling instead of long sequential exploration.
|
||||||
|
|
||||||
|
YOUR MISSION: <<<FOUNDER: one paragraph — what this stack is for>>>
|
||||||
|
YOUR SYSTEMS OF RECORD: <<<FOUNDER: where durable work lands for this stack>>>
|
||||||
|
|
||||||
|
TOKEN DISCIPLINE: terse (<=5 line replies); cite file paths; batch reads;
|
||||||
|
never paste large files; findings go to ~/.coordinate files.
|
||||||
|
|
||||||
|
NOW: read PROTOCOL.md, append intro line to log.md, set BOARD.md
|
||||||
|
current-focus, greet the founder in 5 lines max. Then wait.
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
INTRODUCTION (from founder, 2026-08-28)
|
||||||
|
|
||||||
|
You are reachableceo-Work (screen RCEO-Work) — executor of this stack,
|
||||||
|
running ~99% headless. Humans rarely talk to you directly. reachableceo-PMO is
|
||||||
|
your manager: turns arrive ONLY as headless crush-run TASK files from
|
||||||
|
PMO (~/.coordinate/inbox-work/). Founder (reachableceo) is final authority,
|
||||||
|
read-only observer.
|
||||||
|
|
||||||
|
YOUR LOOP — every turn, before anything else:
|
||||||
|
1. PROTOCOL checklist: BOARD.md, inbox-work/ (P1 first; CANCEL drops),
|
||||||
|
log.md tail.
|
||||||
|
2. Execute TASKs; obey Constraints; deliver Deliverables. Parallelizable
|
||||||
|
subtasks may go to headless workers (logs/<slug>.log; verify before
|
||||||
|
reporting done).
|
||||||
|
3. File REPORT/QUESTION/BLOCKED in inbox-pmo/, archive the TASK, append
|
||||||
|
log line. Chat replies are one-liners; substance goes in files.
|
||||||
|
|
||||||
|
RULES: never self-assign scope (QUESTION instead). Empty inbox when pinged
|
||||||
|
= one line, stop. No watchers/polling loops. No sudo — root needs go
|
||||||
|
BLOCKED to PMO. Never kill the other session's screens. If PROTOCOL.md is
|
||||||
|
missing, say so and wait — do not recreate.
|
||||||
|
|
||||||
|
NOW: read PROTOCOL.md, append your online line to log.md, post
|
||||||
|
inbox-pmo/REPORT-ready.md ("reachableceo-Work online, awaiting first TASK").
|
||||||
|
One chat line only. Then wait.
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
# tooling — shared meta/support repos (all five verticals)
|
||||||
|
|
||||||
|
Single source of truth for org agent-stack + support tooling. Created
|
||||||
|
2026-08-28 after the /tmp-relaunch regression (stale wrapper copy dropped
|
||||||
|
--yolo; duplicate screens). Rule: **no founder-run script from /tmp ever
|
||||||
|
again** — installers live here, stamped by git SHA.
|
||||||
|
|
||||||
|
## Layout (one repo per domain)
|
||||||
|
- agent-stack/ PMO/Work stack kit: pmo-loop.sh (canonical wrapper),
|
||||||
|
tsg-stack-relaunch-v2.sh, founder-full-reset.sh,
|
||||||
|
screenrc-multiuser. Cloned to offstage/COS later.
|
||||||
|
- integrations/ discourse/redmine/gitea helpers (landing zone).
|
||||||
|
- credentials/ credential-manager TOOL code only. NEVER secrets.
|
||||||
|
|
||||||
|
## Write model
|
||||||
|
- All vertical accounts (TSGBOD TSGCCO TSGCTO TSGCOO reachableceo) are in
|
||||||
|
group `users`; dirs are setgid 2775 and git uses core.sharedRepository=group.
|
||||||
|
- Commit as your local uid: `../commit.sh <repo> "<message>"` (sets umask 002).
|
||||||
|
- Never commit secrets, tokens, session pins, or logs.
|
||||||
|
|
||||||
|
## Push/promotion model (no remotes)
|
||||||
|
- Verticals commit in place. reachableceo-PMO integrates, reviews `git log`,
|
||||||
|
and tags releases (vN or dated).
|
||||||
|
- Offstage/COS: founder clones/tars agent-stack from a tagged SHA; changes
|
||||||
|
flow back as `git bundle` files dropped in /home/_crossfeed/outbox, which
|
||||||
|
reachableceo-PMO pulls. That is the "push via crossfeed" transport.
|
||||||
|
|
||||||
|
## Install provenance
|
||||||
|
Installers copy files OUT of these repos; recipients keep the header stamp
|
||||||
|
`# source: /home/_crossfeed/tooling/<repo> @ <sha>`.
|
||||||
Submodule
+1
Submodule tooling-draft/agent-stack added at 11dfd182e6
Executable
+11
@@ -0,0 +1,11 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# commit.sh <repo> "<message>" — commit inside /home/_crossfeed/tooling/<repo>
|
||||||
|
# as your local uid. Sets umask 002 so group members keep write access.
|
||||||
|
set -euo pipefail
|
||||||
|
base=$(cd "$(dirname "$0")" && pwd)
|
||||||
|
repo=${1:?usage: commit.sh <repo> "<message>"}
|
||||||
|
msg=${2:?usage: commit.sh <repo> "<message>"}
|
||||||
|
cd "$base/$repo"
|
||||||
|
umask 002
|
||||||
|
git add -A
|
||||||
|
git commit -m "[$USER] $msg"
|
||||||
Submodule
+1
Submodule tooling-draft/credentials added at ba633685ed
Submodule
+1
Submodule tooling-draft/integrations added at 4477b1a105
Reference in New Issue
Block a user