REQ-F-025: TOOL_TRACE_ID Environment Variable Propagation
Tier: Framework-Automatic | Priority: P2
Source: §33 Observability & Audit Trail
Addresses: Severity: Medium / Token Spend: Medium / Time: High / Context: Medium
Description
The framework MUST read TOOL_TRACE_ID from the environment at startup and associate it with the current invocation. The framework MUST also pass TOOL_TRACE_ID to all child processes spawned during the command. All internal framework log entries written to stderr and the audit log MUST include the trace ID when set.
Acceptance Criteria
- A child process spawned by the framework inherits
TOOL_TRACE_ID - Framework-emitted log lines (stderr) include the trace ID when
TOOL_TRACE_IDis set - Audit log entries include the trace ID
Schema
Types: response-envelope.md
meta.trace_id in the response envelope reflects the value propagated from TOOL_TRACE_ID. This requirement additionally governs child process environment inheritance and log entry formatting, which have no wire-format counterpart beyond meta.trace_id.
Wire Format
Response showing meta.trace_id propagated from the TOOL_TRACE_ID environment variable:
{
"ok": true,
"data": { "deployed": true },
"error": null,
"warnings": [],
"meta": {
"request_id": "01HZ5PQRS",
"trace_id": "span-pipeline-42",
"command": "deploy",
"timestamp": "2024-06-01T12:00:00Z",
"tool_version": "2.4.1"
}
}
Example
Framework-Automatic: no command author action needed. The framework reads TOOL_TRACE_ID at startup and propagates it to all child processes and log entries automatically.
$ TOOL_TRACE_ID=span-pipeline-42 tool deploy --env prod
→ meta.trace_id: "span-pipeline-42"
→ stderr log: [TRACE span-pipeline-42] deploy: starting execution
→ child process inherits TOOL_TRACE_ID=span-pipeline-42
# Child process spawned by the framework
$ env | grep TOOL_TRACE_ID
TOOL_TRACE_ID=span-pipeline-42
# Audit log entry
{"timestamp":"...","command":"deploy","trace_id":"span-pipeline-42","request_id":"01HZ5PQRS",...}
Related
| Requirement | Tier | Relationship |
|---|---|---|
| REQ-F-024 | F | Provides: captures TOOL_TRACE_ID into meta.trace_id; this requirement extends propagation to children and logs |
| REQ-F-026 | F | Consumes: audit log entries include the trace ID propagated by this requirement |
| REQ-F-030 | F | Provides: child process tracking used to pass TOOL_TRACE_ID to spawned processes |
| REQ-F-021 | F | Enforces: trace_id is a volatile field and belongs in meta |