Repository navigation
Conversation
| @@ -0,0 +1,16 @@ | |||
| { | |||
| "defaults": { | |||
There was a problem hiding this comment.
check dans la doc officielle que ce ne soit pas du toml
There was a problem hiding this comment.
Yes. Codex reads TOML: the CLI merges these defaults into $CODEX_HOME/config.toml (or ~/.codex/config.toml). codex.json is an internal framework template, not a Codex configuration file. The official OpenAI documentation shows the [otel] TOML configuration: https://learn.chatgpt.com/docs/config-file/config-advanced#observability-and-telemetry (checked 2026-11-05). Existing settings are preserved or the merge refuses a conflict.
| import { afterEach, expect, it, vi } from "vitest"; | ||
| import { ensureInstallationId } from "../../../src/runtime/filesystem/installation-identity.js"; | ||
|
|
||
| vi.mock("node:fs/promises", async (importOriginal) => { |
There was a problem hiding this comment.
t'es sur de l'intéret de ces tests mockés ?
There was a problem hiding this comment.
The tests mock only the filesystem link operation to deterministically exercise three hard-to-reproduce cases: another initializer wins, the filesystem returns EIO, or the winning identity disappears. They check the identity returned and temporary-file cleanup. A separate integration test starts 12 real concurrent initializations against the filesystem without mocking; both suites pass (20 tests). I would keep the injected failure cases because real concurrency alone does not reliably exercise them.
|
|
||
| ## Output | ||
|
|
||
| The identity set, shown or removed, as the command reported it. |
There was a problem hiding this comment.
Ok mais on veut un tableau qui donne l'IA de la personne et probablement le endpoint utilisé, quand il a été généré, où il est stocké... non ?
There was a problem hiding this comment.
The identity guidance now specifies a table for the local report name, installation UUID and provider identity, including tool, endpoint, creation time and storage when verified. Fields the CLI does not report are explicitly unknown, not inferred. This documents the requested output; exposing additional metadata in the CLI is not implemented yet. f49ba8e7
|
|
||
| ## Input | ||
|
|
||
| The project directory. |
There was a problem hiding this comment.
Faut dire à l'utilisateur dans un tableau en output ce qui a été stoppé (otel ? gouvernail en prod ou local ?) ...
Depuis quand dans un tableau propre, faut qu'il soit serein sur le fait que rien n'est plus collecté.
There was a problem hiding this comment.
The stop guidance now reports each scope separately. telemetry off ends consent for this clone, but does not stop native exporters or the raw OTLP collector; previously consented data may still be sent, and the CLI does not report the exact stop time. We cannot yet promise that all collection has stopped. f49ba8e7
|
|
||
| ## Process | ||
|
|
||
| 1. Run `aidd telemetry forget` with no flag. It removes nothing and lists what it would. |
There was a problem hiding this comment.
ça c'est autorisé partout sauf en prod sur le gouvernail
There was a problem hiding this comment.
The documentation now distinguishes local usage deletion from OTLP captures and data already received by Gouvernail. Production deletion is a future prohibition, not a rule enforced by the current local command; production integration is not implemented. f49ba8e7
| 2. Obtain both choices and explain that native telemetry goes to the selected collector and can include sensitive data. | ||
| - The development collector and its private token must already exist; initialization does not start it. | ||
| - Production is refused until its destination is configured. | ||
| 3. Run `aidd telemetry otel init --config=<provider> --endpoint=<destination>` after an explicit request enabling that export. |
There was a problem hiding this comment.
Le endpoint par défaut est une config dans le CLI, on a local (pour les devs), et https://gouvernail.eu à terme
There was a problem hiding this comment.
The current development collector is fixed in the CLI at http://127.0.0.1:14318. The documentation names https://gouvernail.eu as the intended future destination, not an active endpoint. Production initialization remains refused; mandatory production identity is not implemented yet. f49ba8e7
| @@ -0,0 +1,24 @@ | |||
| # 07 - Verify provider receipt | |||
There was a problem hiding this comment.
ça fait pas beaucoup de sous action ? on devrait pas split ? Je peux me tromper challenge ça
There was a problem hiding this comment.
I recommend keeping verification as a separate internal, read-only action: it checks receipt independently of configuration and does not create another user-facing skill. These are actions inside one skill, not seven skills the user must choose. If this separation feels too heavy we can consolidate it, but configuration success alone must not imply receipt. f49ba8e7
Make local comparisons reproducible and preserve explicitly enabled repository metadata.
Keep the command reference aligned with the two-turn runner.
Allow session observations to carry a declared installation without treating it as a user identity.
Preserve session-linked turn observations without forwarding trace content.
Describe installation binding and legacy attribution for each tool.
Keep the field inventory aligned with the local OTLP forwarding and token attribution behavior.
Preserve the evidence needed to improve request-level attribution without guessing.
Allow request-level correlation and usage reconciliation without forwarding message contents.
Set accurate expectations for reproducing local observations.
# Conflicts: # cli/package.json # cli/scripts/check-bundle-size.mjs
What and why
Capture and forward OpenTelemetry for Claude Code, Codex and OpenCode v2 without reading native session files or the framework usage ledger. An opt-in OpenCode server plugin transforms its public session events into OTLP logs.
aidd telemetry otel runstarts one provider session with a private collector and requires--yesto opt in for that execution. It does not infer a project or feature association. Cost calculation is out of scope.The framework's existing local usage report remains a separate feature. Provider exporter initialization is also separate: user-level export can capture activity from other projects and is not required for the isolated run.
Consent, identity and data
The isolated run sends allowlisted observations to loopback Gouvernail using the selected connector token. New local Gouvernail tokens for each tool can be explicitly assigned to a team, member and installation. This identifies the declared assignee, not the physical person using the token; rotating one replaces the previous token for that tool and organization. Existing shared tokens retain declarative attribution.
--keep-captureretains a private raw OTLP file and prints its location. Raw captures can contain prompts, responses, commands, tool output and secrets. Without it the temporary capture is removed. Collector credentials and temporary settings are not retained.Claude and Codex provide usage fields when emitted. The OpenCode plugin sends session and event IDs, selected model and variant, optional OpenCode project and parent IDs, and positive OpenCode-normalized token counts. It omits prompts, responses, tool content and cost. OpenCode normalizes missing counts to zero, so zero remains unavailable. The selected model and variant do not prove the served model or effective effort.
Production export remains disabled pending an authenticated user identity and destination. The installation UUID is not an authentication credential. Delivery completeness and exactly-once delivery are not guaranteed.
--follow-upsends a second prompt in the same session. Claude and Codex retain their CLI conversation history locally.--include-installation-idopts in to sending the existing installation UUID and is required for new assigned tokens. The UUID identifies an installation and is not a person or authentication credential.--include-repositoryseparately opts in to Claude’s declared repository URL.The isolated Codex runner forwards only allowlisted
session_task.turnattributes, after session logs; trace events, paths and content are excluded. The span model is selected, and counters are deltas that may cover multiple requests or models. Duplicate turn IDs and partially overlapping periods are treated conservatively by Gouvernail.Local verification
After one POC reset, Claude Code, Codex and OpenCode v2 each handled two messages in the same session and recovered the first message’s marker. OTLP observations reached Gouvernail with the same opt-in installation UUID and the configured local member attribution. Claude also supplied its declared repository URL. Codex turn traces provide the session and turn IDs with token observations; extra SSE observations remain separate and are not added to trace totals. Cache zeros remain ambiguous and are not inferred. No native session file was imported; reproduction procedure and provider field inventory.
Local CLI build, typecheck, focused checks and provider executions passed. Final CI remains to be checked.
Certification
Provider coverage research
The provider observability guide records the fields documented or observed in OTLP, current forwarding gaps and source links. Claude request events contain useful technical fields that are not forwarded yet. Codex turn histograms could not be correlated safely; filtered turn traces carry the session and turn IDs together with their counters. OpenCode v2 standard OTLP did not expose session-linked model or usage in the earlier captures. The opt-in plugin now exports source events as OTLP; missing events and the provider’s ambiguous zeros remain unavailable.