Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .agents/skills/atlas/assets/seed/catalog.json

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"citations":[{"path":"docs/coordination/diagnostic-execution.md","repository":"FS-GG/.github","revision":"641072f56a40b384eb4ae611877a51ecb0685cd7","sha256":"7d1f1bcdd177c826fe1a38d58cb1a710956ac96a8bb93cedb482be736da2ed92"}],"conflictsWith":[],"id":"github/admitted-privileged-script-lessons","kind":"lesson","recordedAt":"2026-10-22T15:20:00Z","repository":"FS-GG/.github","schema":"fsgg.atlas/1","status":"recorded","summary":"Practice observed during the Home UTEL cutover on 2026-10-22 (#4707 comment 6342802444; #4516 comments 6342485532, 6342582454, 6342600785, 6342801775, 6343331328).\n\n1. Privileged scripts run on Home under a user's root terminal are admitted by exact bytes: review the delivered bytes against a recorded sha256, run `--dry-run` first with reads only, then admit and run `--execute` once for that exact hash. A change needs a new hash, a diff against the reviewed version and a delta review; a dry-run admission does not authorize execute.\n2. Rollback was exercised as designed: in the 3d cutover two executes rolled back cleanly (admission 3 refused at P2 on an over-strict WAL/shm gate, #4516 comment 6342485532; admission 4 failed on operator probe defects such as requiring `process == \"running\"` when `status` through `podman exec` reports `unknown`, #4516 comment 6342582454), each with byte-restored originals, an unchanged previous store, a disarmed watchdog and no residue; admission 5 committed. #4707 comment 6342802444 characterizes the earlier attempts as probe-defect rollbacks. A fail-closed rollback is an accepted outcome, not a Host defect, and the next admission is a narrow delta.\n3. Required in review of the enrollment script (#4516 comment 6343331328): remove any client secret copy on every non-commit exit, including a failure after it was written but before the server copy exists, gate that removal (`clientCopyRemoved`), and gate that no inbox `.ready` or non-empty -wal exists at the stated points.\n\nLimits: process guidance, not authority. Each privileged effect still needs its own admission; reviewed bytes and receipts stay in their original custody. The cited document defines generic failure-custody expectations for diagnostic execution; items 1-3 rest on the cited issue comments, not on that document.","supersedes":[],"tags":["lesson","runbook","privileged-script","exact-bytes","dry-run","rollback","fail-closed","home"],"title":"Admitted privileged scripts: exact-bytes review, dry run, then execute; fail-closed rollback"}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"citations":[{"path":"src/FS.GG.Coord.Cli/WorkspaceTelemetryApplication.fs","repository":"FS-GG/.github","revision":"641072f56a40b384eb4ae611877a51ecb0685cd7","sha256":"7c1c889ceb8022f66650623016e6e71493b0eba6dc755272a62800095c8ef150"}],"conflictsWith":[],"id":"environment/fdev-pasta-host-name-resolution","kind":"lesson","recordedAt":"2026-10-22T15:20:00Z","repository":"FS-GG/.github","schema":"fsgg.atlas/1","status":"recorded","summary":"fdev is itself a rootless Podman container using pasta networking (`/run/.containerenv` present). The `192.168.1.129` on its `enp6s0` is pasta's copy of the host address, so connecting to it from fdev reaches fdev's own namespace, which has no listener (connection refused, empty `ss`). Consequently `fsgg-store.lan` (which resolves to 192.168.1.129) loops back into fdev instead of reaching the Home receiver. The host is reachable at `169.254.1.2` (`host.containers.internal`); from fdev, 169.254.1.2:8447 was open and TLS verified against the pinned CA with `-servername fsgg-store.lan` (#4516 comment 6343424577, which corrects two earlier requests that wrongly assumed fdev shared the host network namespace). The receiver was healthy; the fault was fdev's name resolution.\n\nConstraint: `/etc/hosts` in fdev is root-owned and read-only. A per-process override that works without changing system files or producer config: create a private mount namespace (`unshare --map-current-user --keep-caps -m`), bind-mount a private hosts file mapping `fsgg-store.lan` to 169.254.1.2 over `/etc/hosts`, then drop all capabilities (`setpriv --ambient-caps=-all --inh-caps=-all --bounding-set=-all`) before running the engine, so the override affects only that process (#4705; #4516 comment 6343768096). The producer endpoint and queued state stay unchanged, which matters because queued batches must not be repointed.\n\nLimits: observations for fdev on 2026-10-22; interface addresses, the gateway alias and published ports are live and must be rechecked. This does not authorize sending or draining; each effect is admitted separately. Keep credentials out of argv and logs in any wrapper.","supersedes":[],"tags":["fdev","podman","pasta","networking","hosts","fsgg-store.lan","host.containers.internal","unshare","setpriv","telemetry-endpoint"],"title":"fdev is a rootless Podman container with pasta networking; fsgg-store.lan loops back unless overridden"}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"citations":[{"path":"src/FS.GG.Telemetry.Host/Program.fs","repository":"FS-GG/.github","revision":"641072f56a40b384eb4ae611877a51ecb0685cd7","sha256":"2413eee3f1e5382e2a2b6a762d19a7d9664691243e558291c4245788746775ea"},{"path":"src/FS.GG.Telemetry.Host/HostRuntime.fs","repository":"FS-GG/.github","revision":"641072f56a40b384eb4ae611877a51ecb0685cd7","sha256":"69e2d02f5e69fce58c2f8e452f40a6152d66d5f723ace6edc23a2d901f350e32"},{"path":"docs/coordination/telemetry-host-release.md","repository":"FS-GG/.github","revision":"641072f56a40b384eb4ae611877a51ecb0685cd7","sha256":"700f3dad1c25d8d8467fcca40f005e6de7bd2b99424262bf267ccffbeac8e678"}],"conflictsWith":[],"id":"github/home-utel-receiver-host-0-8-state","kind":"boundary","recordedAt":"2026-10-22T15:20:00Z","repository":"FS-GG/.github","schema":"fsgg.atlas/1","status":"recorded","summary":"Live and operational facts observed on 2026-10-22 and posted to #4707 and #4516; refresh from the receiver before action, because they will change.\n\nState: Host 0.8.0 serves the schema-14 store `store14-v1` (#4707 comment 6342802444; #4516 comment 6342801775). The step 3d cutover committed at 14:05Z after a 21.4 s outage and was accepted by independent review with all 36 recorded gates true. The previous schema-12 store (uv12) was kept pristine for rollback; the rollback window runs to 2026-10-23 14:10Z, and rolling back discards anything ingested on uv14. Credential `home-passive-programme-v1` for producer `codex-passive-home-01`, stream `native-usage`, workspace `utel-home-20261003` was enrolled and committed at about 15:05Z (outage 20.1 s; #4516 comment 6344035100). The enrollment left Host on 0.8.0 with lifetime receipts 4 and pending 0 until the first send.\n\nMechanics established from source and review (#4516 comments 6343204826, 6343331328; Host Program.fs and HostRuntime.fs): credentials load only at `serve` start, so enrolling needs a restart of serve. `enroll-producer` requires the credential to be already declared in the config with matching reference, secret file, workspace, producer, stream and revoked flag, runs under the service lock (so while serve is stopped), and writes the principal through an INSERT OR IGNORE, so exit 0 alone can hide an already-enrolled no-op; check the status and row delta. `/private/health` accepts any non-revoked config credential (Runtime.authenticate on the Bearer check), so a new credential can be health-checked before any send; dashboard login is separate (browser principals, rate limited per process) and is not authenticated by these credentials. `status` run through `podman exec` while serve holds the lock reports `process: \"unknown\"`, which is not a failure. Planned expectation, not yet an observed 0.8.0 result at capture: the first passive POST is expected to return 202 `durably-received` (#4516 comment 6343768096), with application later; accepting a receipt needs the `applied` transport receipt, not the 202.\n\nThe cutover committed on admission 5. Two earlier executes rolled back cleanly for different causes: admission 3 refused at P2 because a gate required more than needed (a 0-byte -wal and a -shm left after the stop; #4516 comment 6342485532), and admission 4 failed on two of the operator's own probe defects, a `process == \"running\"` requirement that `status` through `podman exec` cannot meet and a dashboard login rate-limit (429) caused by re-running the whole health set every few seconds, while 0.8.0 itself was healthy (#4516 comment 6342582454). Admission 5 committed (#4516 comments 6342600785, 6342801775).\n\nLimits: dated operational observations, not a standing contract. The published Host contract and release boundary stay in contract/telemetry-host; this record grants no enrollment, send, retention-cleanup or rollback authority.","supersedes":[],"tags":["utel","telemetry-host","host-0.8.0","schema-14","store14-v1","enrollment","rollback-window","operational-state","receiver","home"],"title":"Home UTEL receiver serves Host 0.8.0 on schema-14 store14-v1; live state dated 2026-10-22"}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"citations":[{"path":"src/FS.GG.Telemetry.Client/ObservedCodexProcess.fs","repository":"FS-GG/.github","revision":"641072f56a40b384eb4ae611877a51ecb0685cd7","sha256":"29d6d1823fdebb8f3f2b9e94737003becd35ca80833e4cbb251edaa3d841284c"},{"path":"src/FS.GG.Coord.Cli/WorkspaceTelemetryApplication.fs","repository":"FS-GG/.github","revision":"641072f56a40b384eb4ae611877a51ecb0685cd7","sha256":"7c1c889ceb8022f66650623016e6e71493b0eba6dc755272a62800095c8ef150"},{"path":"src/FS.GG.Coord.Core/TelemetryReceipt.fs","repository":"FS-GG/.github","revision":"641072f56a40b384eb4ae611877a51ecb0685cd7","sha256":"ad438ff9a7f4bb94befc4f9d3bed414b8320b767772220019eaa75dee3ea379e"}],"conflictsWith":[],"id":"github/utel-producer-association-identity","kind":"lesson","recordedAt":"2026-10-22T15:20:00Z","repository":"FS-GG/.github","schema":"fsgg.atlas/1","status":"recorded","summary":"Telemetry batch identities are built as `<invocation>-%06d<sequence>` (ObservedCodexProcess.fs, ingestId). The leading invocation token is a per-run generation, so it identifies one agent run, not a producer association. Observed case (UTEL-H3, issue #4516 comments 6343114421 and 6342965141, investigated read-only from file metadata and source on 2026-10-22): invocation `002ca0e2c0af4d2f9bebcaf30536a40a` was a single terminal agent run with 3 applied receipts on 2026-10-03. Sequence numbering ended at 3 with the run, so no genuine ordinal 4 exists or can exist; sending one would be fabrication. Do not treat such an ID as an association to resume, repoint or clone.\n\nThe canonical persistent association for workspace `utel-home-20261003` is the passive producer `codex-passive-home-01`, stream `native-usage`, credential reference `home-passive-programme-v1`. The client engine derives the credential environment variable from the reference by upper-casing and replacing `-` with `_`, here FSGG_TELEMETRY_CREDENTIAL_HOME_PASSIVE_PROGRAMME_V1 (WorkspaceTelemetryApplication.fs, credential). The receiver authorizes by exact producer, stream and workspace scope (TelemetryReceipt.authorize), so a credential for a different producer refuses these batches and relabelling them would be forbidden repointing. Custody of the secret stays with Home (#4705); it never appears in an issue, argument or this record.\n\nHold ownership: an \"ordinal 4 overflow / last-claim\" hold belongs to process-supervision `process_resume` (FS.GG.Coordination#1026), not to telemetry, and does not apply to these batches. The holds that do apply come from #4638: no repointing, cloning or rewriting of queued state, and the retained Unknown reservations stay retained.\n\nLimits: this is an observation dated 2026-10-22 from the cited issue comment and the cited source at the stated revision; association and enrollment state are live facts. Refresh them from the producer config and the receiver before action. The record grants no enrollment, send or drain authority.","supersedes":[],"tags":["utel","telemetry","association","batch-id","ingest-id","passive-producer","native-usage","process-resume","credential-reference"],"title":"A UTEL batch-ID prefix names one finished run, not a persistent association"}
2 changes: 1 addition & 1 deletion .claude/skills/atlas/assets/seed/catalog.json

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"citations":[{"path":"docs/coordination/diagnostic-execution.md","repository":"FS-GG/.github","revision":"641072f56a40b384eb4ae611877a51ecb0685cd7","sha256":"7d1f1bcdd177c826fe1a38d58cb1a710956ac96a8bb93cedb482be736da2ed92"}],"conflictsWith":[],"id":"github/admitted-privileged-script-lessons","kind":"lesson","recordedAt":"2026-10-22T15:20:00Z","repository":"FS-GG/.github","schema":"fsgg.atlas/1","status":"recorded","summary":"Practice observed during the Home UTEL cutover on 2026-10-22 (#4707 comment 6342802444; #4516 comments 6342485532, 6342582454, 6342600785, 6342801775, 6343331328).\n\n1. Privileged scripts run on Home under a user's root terminal are admitted by exact bytes: review the delivered bytes against a recorded sha256, run `--dry-run` first with reads only, then admit and run `--execute` once for that exact hash. A change needs a new hash, a diff against the reviewed version and a delta review; a dry-run admission does not authorize execute.\n2. Rollback was exercised as designed: in the 3d cutover two executes rolled back cleanly (admission 3 refused at P2 on an over-strict WAL/shm gate, #4516 comment 6342485532; admission 4 failed on operator probe defects such as requiring `process == \"running\"` when `status` through `podman exec` reports `unknown`, #4516 comment 6342582454), each with byte-restored originals, an unchanged previous store, a disarmed watchdog and no residue; admission 5 committed. #4707 comment 6342802444 characterizes the earlier attempts as probe-defect rollbacks. A fail-closed rollback is an accepted outcome, not a Host defect, and the next admission is a narrow delta.\n3. Required in review of the enrollment script (#4516 comment 6343331328): remove any client secret copy on every non-commit exit, including a failure after it was written but before the server copy exists, gate that removal (`clientCopyRemoved`), and gate that no inbox `.ready` or non-empty -wal exists at the stated points.\n\nLimits: process guidance, not authority. Each privileged effect still needs its own admission; reviewed bytes and receipts stay in their original custody. The cited document defines generic failure-custody expectations for diagnostic execution; items 1-3 rest on the cited issue comments, not on that document.","supersedes":[],"tags":["lesson","runbook","privileged-script","exact-bytes","dry-run","rollback","fail-closed","home"],"title":"Admitted privileged scripts: exact-bytes review, dry run, then execute; fail-closed rollback"}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"citations":[{"path":"src/FS.GG.Coord.Cli/WorkspaceTelemetryApplication.fs","repository":"FS-GG/.github","revision":"641072f56a40b384eb4ae611877a51ecb0685cd7","sha256":"7c1c889ceb8022f66650623016e6e71493b0eba6dc755272a62800095c8ef150"}],"conflictsWith":[],"id":"environment/fdev-pasta-host-name-resolution","kind":"lesson","recordedAt":"2026-10-22T15:20:00Z","repository":"FS-GG/.github","schema":"fsgg.atlas/1","status":"recorded","summary":"fdev is itself a rootless Podman container using pasta networking (`/run/.containerenv` present). The `192.168.1.129` on its `enp6s0` is pasta's copy of the host address, so connecting to it from fdev reaches fdev's own namespace, which has no listener (connection refused, empty `ss`). Consequently `fsgg-store.lan` (which resolves to 192.168.1.129) loops back into fdev instead of reaching the Home receiver. The host is reachable at `169.254.1.2` (`host.containers.internal`); from fdev, 169.254.1.2:8447 was open and TLS verified against the pinned CA with `-servername fsgg-store.lan` (#4516 comment 6343424577, which corrects two earlier requests that wrongly assumed fdev shared the host network namespace). The receiver was healthy; the fault was fdev's name resolution.\n\nConstraint: `/etc/hosts` in fdev is root-owned and read-only. A per-process override that works without changing system files or producer config: create a private mount namespace (`unshare --map-current-user --keep-caps -m`), bind-mount a private hosts file mapping `fsgg-store.lan` to 169.254.1.2 over `/etc/hosts`, then drop all capabilities (`setpriv --ambient-caps=-all --inh-caps=-all --bounding-set=-all`) before running the engine, so the override affects only that process (#4705; #4516 comment 6343768096). The producer endpoint and queued state stay unchanged, which matters because queued batches must not be repointed.\n\nLimits: observations for fdev on 2026-10-22; interface addresses, the gateway alias and published ports are live and must be rechecked. This does not authorize sending or draining; each effect is admitted separately. Keep credentials out of argv and logs in any wrapper.","supersedes":[],"tags":["fdev","podman","pasta","networking","hosts","fsgg-store.lan","host.containers.internal","unshare","setpriv","telemetry-endpoint"],"title":"fdev is a rootless Podman container with pasta networking; fsgg-store.lan loops back unless overridden"}
Loading
Loading