Skip to content

Commit d4c9e8b

Browse files
committed
fix: dogfood G23-G38 first-run, background plan, and CLI error-contract repairs
Owner adjudicated the agent-proposed G23-G38 triage "Yes for all" on 2026-09-16 (docs/work-log/dogfood-findings-2026-09-15.md, "Owner decisions (2026-09-16)"). Landed as small existing-contract repairs, one behavior regression per finding (all observed failing pre-change): - G23/G38 init/setup: no key prompt for `fake` (ProviderConfig.requires_api_key), non-TTY stdin without --provider fails fast with a classified error before any write; key-requiring providers proceed with api_key_note. - G24 init next_steps show the workspace-write plan gate (plan -> --from-plan). - G29 init/setup append `.teaagent/` to .gitignore in git repos (--no-gitignore opt-out, gitignore status reported); first next step commits the scaffold so the git sandbox stays enabled. - G30 `fake` is requires_network=False: preflight skips DNS/loopback probes. - G31 background worker argv forwards --from-plan/--require-plan/ --skip-plan-check (+ --allow-external-plan); --from-plan without a positional task no longer crashes the parent. - G26 run-list JSON arrays contain only run records; scratchpad hint is human-output only. - G35 MCP unknown tools/call -> JSON-RPC -32602, session keeps serving (catch narrowed to the registry lookup). G27 mcp trust allow/deny without TEAAGENT_MCP_TRUST_KEY -> classified error (G11 wrong-key semantics untouched). - G32 memory auto-invalidate accepts a str root. G33 skill candidate install not-found -> classified error. G36 automation add validates the schedule before persisting. G37 automation show/pause/resume/delete/run accept a unique name. G28 bare audit verify errors up front without a legacy log. G25 release evidence prints gate progress on stderr. - G34 held under ADR-0043 (no change). D1 still deferred. Docs: cli/USAGE/daily-driver/audit guide updated; risk record docs/reviews/dogfood-g23-g38-2026-09-16-risk.md; roadmap-status, backlog, findings, and the rethink record updated; generated artifacts regenerated. Gate: governance-gap (G26/G27/G28/G29/G31/G32/G33/G35/G36) and owner-override (G23/G24/G25/G30/G37/G38, owner "Yes for all" 2026-09-16) Constraint: existing-contract repairs only; no sandbox/approval/policy/runner-core code; G34 consensus untouched; no owner verdict supplied Tested: focused pytest 180 passed across new tests/test_dogfood_*_g*.py and touched families; integrated /tmp scratch journey (headless init -> committed scaffold -> offline preflight ready -> sandboxed agent run completed, porcelain clean; runs list schema; audit verify bare error; MCP -32602 then valid call); ruff/mypy clean on 19 changed files; verify_docs.sh PASS Not-tested: live `release evidence` default-profile progress (unit-proven with stubbed runner); full pytest suite Confidence: high Action: G-P2-19 Roadmap-Status: updated (2026-09-16 G23-G38 implemented note; no horizon/milestone status column moved)
1 parent fb35805 commit d4c9e8b

45 files changed

Lines changed: 1340 additions & 115 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs/USAGE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ teaagent memory failures prune
8585
- `plan` writes a reviewable artifact; `run --from-plan` binds execution to that artifact (task + content hash in the run audit log). Plans must live under `.teaagent/plans/` unless you pass `--allow-external-plan` (other paths must still be under `--root`).
8686
- **Plan-before-write enforcement**: `workspace-write` mode requires a plan by default. Use `--skip-plan-check` to override.
8787

88-
**Advanced paths** (not part of the golden path): `teaagent init`, `teaagent doctor providers --wizard`, manual `providers_env.zsh`, Keychain scripts, per-provider env exports — see [Recovery recipes](#recovery-recipes) and [API Key Setup](#api-key-setup).
88+
**Advanced paths** (not part of the golden path): `teaagent init` (non-interactive stdin requires `--provider`; skips the API-key prompt for `fake`; adds `.teaagent/` to `.gitignore` in git repos unless `--no-gitignore`; for `workspace-write` its next-steps show the `plan``--from-plan` gate), `teaagent doctor providers --wizard`, manual `providers_env.zsh`, Keychain scripts, per-provider env exports — see [Recovery recipes](#recovery-recipes) and [API Key Setup](#api-key-setup).
8989

9090
## Setup model
9191

docs/backlog-priority.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Backlog Priority
22

3-
> **Last reviewed:** 2026-09-16 (dogfood G23–G38 triage row added as Proposed; no priority or shipped/beta change)
3+
> **Last reviewed:** 2026-09-16 (dogfood G23–G38 adjudicated "Yes for all" and implemented; G34 held; no priority or shipped/beta change)
44
> **Review trigger:** Backlog priorities or shipped/beta status claims change.
55
> **Scheduling gate (2026-08-26):** DR-006 remains authoritative. EFX-001–003
66
> are in-progress P0 `governance-gap` remediations on existing seams; no
@@ -68,7 +68,7 @@ was met on 2026-06-22; completing that intake does not authorize new work.
6868
| CP-6 Community Presence | `legacy-competitive` | **Hold** — external acquisition non-goal |
6969
| M4 cloud/background/control-plane cockpit | `legacy-competitive` | **Hold except DR-006 carve-out** — background lifecycle + operator cockpit eligible under owner-override co-maintainer dogfood; cloud/SaaS/multi-tenant GTM held (T4). 2026-09-15 co-maintainer dogfood session completed (B2 evidence, B1 still pending) |
7070
| RBAC enforce flip (ADR 0031, packet evaluated 2026-09-15) | `governance-gap` | **Hold** — 4/5 criteria prepared, promotion not ready; owner extended to 2026-09-29 conditioned on G1–G5 landing and re-dogfood; promotion_ready=false; no premature enforce flip |
71-
| Dogfood findings G23–G38 (2026-09-15 sweep; triage in `work-log/dogfood-findings-2026-09-15.md`, reasoning in `reviews/roadmap-rethink-2026-09-16.md` §5) | proposed per item: 9 `governance-gap`, 6 `owner-override`, 1 `legacy-competitive` (G34) | **Proposed — not scheduled**; owner adjudication batch pending; nothing lands without its cited gate |
71+
| Dogfood findings G23–G38 (2026-09-15 sweep; decisions in `work-log/dogfood-findings-2026-09-15.md` §"Owner decisions (2026-09-16)", reasoning in `reviews/roadmap-rethink-2026-09-16.md` §5) | 9 `governance-gap`, 6 `owner-override`, 1 `legacy-competitive` (G34) | **Done 2026-09-16** except G34 (**Hold**, ADR-0043 expiry review 2026-12-09) — owner "Yes for all"; landed with per-finding behavior regressions and an integrated first-run scratch journey; residual twins listed in the findings record |
7272
| TASK-006 RunEvent taxonomy + M0 | `harness-migration` | **Done** — ADR-0032 run-event taxonomy; `teaagent/runner/_events.py` spine + audit dual-write (M0–M7 in work-log) |
7373
| TASK-001 constitution repositioning | `owner-override` | **Done (Human Review 2026-07-22)** — owner ratified harness-first positioning; no README/product-contract changes required |
7474
| TASK-002 docs tiering | `harness-migration` | **Done** — tier column in `docs/generated/docs-inventory.md` + aging dashboard; `check-docs-inventory` pre-commit regen |

docs/cli.md

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,21 @@ teaagent tui --permission-mode allow
283283
teaagent tui --permission-mode danger-full-access
284284
```
285285

286+
## Workspace Init
287+
288+
`teaagent init` is the non-wizard bootstrap (the guided flow is `teaagent setup`):
289+
290+
```bash
291+
teaagent init --root . --provider fake # offline smoke provider needs no key
292+
teaagent init --root . --provider gpt --api-key sk-...
293+
teaagent init --root . --provider gpt --no-gitignore # opt out of the .gitignore addition
294+
```
295+
296+
- Non-interactive stdin (piped/headless): `init` and `setup` without `--provider` fail fast with `{"ok": false, "message": "provider is required in non-interactive mode; pass --provider <name> (choices: ...) or run in a terminal"}` and exit 1 before writing any file. They never silently select a credentialed provider.
297+
- Providers that need no key (`fake`) are never prompted for one. For a key-requiring provider on non-TTY stdin, `init` proceeds without storing a key and reports `api_key_note` naming the env var to set.
298+
- In a git repo, `init` (and `setup`, when it writes config) adds `.teaagent/` to `.gitignore` so the auto-enabled git sandbox stays usable; the result is reported as `gitignore: added|present|skipped|not-a-git-repo`. Existing lines are never rewritten and no git command runs; `--no-gitignore` opts out.
299+
- For `--permission-mode workspace-write`, `next_steps` include the plan-gate path (`teaagent agent plan ...` then `teaagent agent run ... --from-plan .teaagent/plans/<plan-file>.md`); `--skip-plan-check` is not recommended.
300+
286301
## Model Adapters
287302

288303
List supported providers:
@@ -613,7 +628,7 @@ Streamable HTTP details:
613628
- `--auth-token TOKEN` requires `Authorization: Bearer TOKEN` on every request.
614629
- `--allowed-origin URL` may be repeated to whitelist browser Origin headers. Default: allow all.
615630

616-
Supported methods: `initialize`, `tools/list`, `tools/call`. Each tool is exposed with its `inputSchema` and read-only / destructive / idempotent annotations. Tool errors are returned as `result.isError = true` rather than JSON-RPC errors so the client can recover.
631+
Supported methods: `initialize`, `tools/list`, `tools/call`. Each tool is exposed with its `inputSchema` and read-only / destructive / idempotent annotations. Tool *execution* errors are returned as `result.isError = true` rather than JSON-RPC errors so the client can recover; a `tools/call` for an unregistered tool is a JSON-RPC `-32602` (Invalid params) error frame (`tool 'X' is not registered`) and the server keeps serving.
617632

618633
## Subagent Delegation
619634

@@ -1015,25 +1030,34 @@ teaagent agent automation add daily-brief "Summarize open TODOs" --schedule "dai
10151030
teaagent agent automation add lint-sweep "Check docs consistency" --schedule "every 2h" --root . --auto-propose-skill
10161031
```
10171032

1018-
List and inspect:
1033+
Schedules accept `every <N>m`, `every <N>h`, or `daily HH:MM`. Any other value
1034+
(for example a cron expression like `*/5 * * * *`) is rejected before anything
1035+
is written, returning `{"status": "error", "message": "unsupported schedule
1036+
'...'; use 'every 30m', 'every 2h', or 'daily HH:MM'"}` with exit code 1.
1037+
1038+
List and inspect. The `show`, `pause`, `resume`, `delete`, and `run` commands
1039+
accept either the hex `automation_id` or a unique automation `name`; a name
1040+
that matches more than one automation returns an `ambiguous automation name
1041+
'<name>': ids ...` error (exit code 1), and an unknown value returns the
1042+
usual `automation '<value>' not found` error.
10191043

10201044
```bash
10211045
teaagent agent automation list --root .
1022-
teaagent agent automation show <automation_id> --root .
1046+
teaagent agent automation show <automation-or-name> --root .
10231047
```
10241048

10251049
Control lifecycle:
10261050

10271051
```bash
1028-
teaagent agent automation pause <automation_id> --root .
1029-
teaagent agent automation resume <automation_id> --root .
1030-
teaagent agent automation delete <automation_id> --root .
1052+
teaagent agent automation pause <automation-or-name> --root .
1053+
teaagent agent automation resume <automation-or-name> --root .
1054+
teaagent agent automation delete <automation-or-name> --root .
10311055
```
10321056

10331057
Execute runs:
10341058

10351059
```bash
1036-
teaagent agent automation run <automation_id> --root .
1060+
teaagent agent automation run <automation-or-name> --root .
10371061
teaagent agent automation tick --root .
10381062
teaagent agent automation tick --dry-run --root .
10391063
teaagent agent automation serve --interval-seconds 30 --max-ticks 10 --root .

docs/daily-driver-current-status.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111
> `docs/analysis/`.
1212
>
1313
> **Review trigger:** TUI, chat, agent mode, approval, cost, undo, or resume behavior changes.
14-
> **Last reviewed:** 2026-09-15 (approval behavior changes: deny grants block
15-
> all modes, `approval reject` CLI, 24h pending-approval TTL, unbounded pending
16-
> surfaces — see `permission-and-approval-playbook.md`; undo refuses off-branch;
17-
> attach inherits the run's recorded provider)
14+
> **Last reviewed:** 2026-09-16 (first-run and error-contract fixes G23–G38:
15+
> offline-ready `fake` provider, `init`/`setup` gitignore `.teaagent/` and fail
16+
> fast on non-interactive stdin, `--background` honors plan flags, run-list JSON
17+
> arrays contain only runs, MCP unknown-tool calls no longer end the session)
1818
1919
This page is the short daily-use entry point for TeaAgent's TUI, TUI chat, and
2020
agent mode. It is intentionally more practical than the audit corpus.
@@ -43,6 +43,9 @@ daily-driver plan is historical evidence, not an active scheduling authority.
4343

4444
- Approval governance now fail-closes GitHub/browser/MCP external mutations in prompt/read-only/workspace-write, consumes one-time JIT grants, and refuses blind redispatch of unmatched non-idempotent starts. Providerless acceptance is in `tests/acceptance/test_efx_durable_effect_flow.py`. Keep live credentials off until a live-credential dry-run exists; see "Known issues."
4545
- `daily`/`preflight` warn when `GITHUB_TOKEN`/`GH_TOKEN` sit in the shell environment: external-effect tools stay fail-closed until approved, but remove ambient tokens unless authorizing live use (EFX-002).
46+
- The `fake` provider is offline-ready: `agent preflight`/`plan`/`daily` pass with no DNS or socket call because `ProviderConfig.requires_network=False` short-circuits the connectivity and loopback-bind checks (G30).
47+
- `init`/`setup` add `.teaagent/` to `.gitignore` in git repos (append-only; `--no-gitignore` opts out) so the auto-enabled git sandbox no longer self-disables on first run, and non-interactive `init`/`setup` fail fast with a classified error instead of crashing on stdin EOF (G23/G29/G38).
48+
- `agent run --background` forwards `--from-plan`/`--require-plan`/`--skip-plan-check` to the worker, so a workspace-write background run with a valid plan produces a run instead of dying on `PLAN_GATE` (G31). `runs list`/`session list` JSON arrays contain only run records; the scratchpad hint is human-output only (G26).
4649
- `teaagent chat` prints successful task answers and no longer marks successful tasks as failures.
4750
- `teaagent chat` `/cost` and `/budget` are wired to real session cost. Budget semantics are explicit: `None` means unlimited, while `0` is a real zero cap. Cost display labels whether the value is actual, estimated, or unavailable.
4851
- Matched deny grants now hard-block in every mode (`approval check` reports

docs/generated/docs-aging-dashboard.md

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,24 @@
44
55
**Stale threshold:** 90 days since `Last reviewed`
66
**Current-truth docs scanned:** 17
7-
**Needs attention (working tier only):** 0
7+
**Needs attention (working tier only):** 2
88
**Archive-tier docs (exempt from staleness):** 0
99

1010
Regenerate: `python3 scripts/report_docs_aging.py`
1111

12-
All scanned current-truth working-tier docs are fresh.
12+
## Stale Or Incomplete By Owner Surface
13+
14+
### cli
15+
16+
| Document | Status | Last reviewed | File mtime | Notes |
17+
| --- | --- | --- | --- | --- |
18+
| `docs/cli.md` | stale_by_mtime | 2026-09-15 | 2026-09-16 | Missing owner banner; File modified after last reviewed date |
19+
20+
### daily-driver
21+
22+
| Document | Status | Last reviewed | File mtime | Notes |
23+
| --- | --- | --- | --- | --- |
24+
| `docs/USAGE.md` | stale_by_mtime | 2026-08-26 | 2026-09-16 | Missing owner banner; File modified after last reviewed date |
1325

1426
## Review Triggers (Current-Truth Docs)
1527

@@ -35,7 +47,7 @@ All scanned current-truth working-tier docs are fresh.
3547

3648
## Corpus Cost (G5 Signal)
3749

38-
**Total docs:** 664 (baseline 582 at diagnosis, delta +82)
50+
**Total docs:** 665 (baseline 582 at diagnosis, delta +83)
3951
**Live corpus (non-archive):** 377
4052
**Working-tier docs unreferenced by INDEX.md:** 328
4153

docs/generated/docs-inventory.md

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
Generated by `python3 scripts/generate_docs_inventory.py`.
77
Do not edit this file manually — regenerate instead.
88

9-
**Markdown files:** 663
9+
**Markdown files:** 664
1010

1111
| Path | Tier | Bytes | SHA256 (12) |
1212
| --- | --- | ---: | --- |
@@ -197,11 +197,11 @@ Do not edit this file manually — regenerate instead.
197197
| `architecture/seven-control-loops-teaagent-integration-map-2026-06-05.md` | archive | 9282 | `6d85e832f8eb` |
198198
| `archive/INDEX.md` | working | 8774 | `1efa1af575f5` |
199199
| `audit-events.md` | working | 2376 | `b83066076fba` |
200-
| `backlog-priority.md` | working | 40373 | `8c520656cfe5` |
201-
| `cli.md` | working | 38796 | `3acc21fd9fc1` |
200+
| `backlog-priority.md` | working | 40547 | `c67c411d0f0e` |
201+
| `cli.md` | working | 41038 | `473615a342bb` |
202202
| `cloud-deployment.md` | working | 9431 | `50f6461a2077` |
203203
| `context-bus-and-federated-sync.md` | working | 1564 | `2dde6eed4bf8` |
204-
| `daily-driver-current-status.md` | working | 20349 | `5daffd323d92` |
204+
| `daily-driver-current-status.md` | working | 21210 | `b462a4be8393` |
205205
| `daily-driver-known-issues-2026-06-01.md` | archive | 3336 | `a7432126b3c0` |
206206
| `daily-driver-troubleshooting.md` | working | 2742 | `e8d7822c46f7` |
207207
| `debugging/agent-resume-debug-checklist-2026-06-02.md` | archive | 1062 | `ed20d824bd09` |
@@ -245,8 +245,8 @@ Do not edit this file manually — regenerate instead.
245245
| `error-reference.md` | working | 4897 | `067448aba6f1` |
246246
| `gateway-oauth-tenants.md` | working | 1818 | `0ff9c7df4652` |
247247
| `generated/command-snippet-inventory.md` | working | 8128 | `bf21da5dfe66` |
248-
| `generated/docs-aging-dashboard.md` | working | 3433 | `630bf72efcf3` |
249-
| `generated/release-docs-evidence.md` | working | 3637 | `95087ecd2030` |
248+
| `generated/docs-aging-dashboard.md` | working | 3879 | `a39993abb672` |
249+
| `generated/release-docs-evidence.md` | working | 3655 | `daf015a2071b` |
250250
| `governance-compliance.md` | constitution | 1645 | `d7665f2f7864` |
251251
| `governance/code-review-checklist.md` | working | 4379 | `f580da208c75` |
252252
| `governance/command-snippet-registry.md` | working | 3023 | `2e6c2b337773` |
@@ -327,7 +327,7 @@ Do not edit this file manually — regenerate instead.
327327
| `modules/chat_session_controller/inspection.md` | working | 6787 | `a7ae96ec3ff6` |
328328
| `modules/chat_session_controller/risks.md` | working | 5986 | `fc08a72f2d0a` |
329329
| `modules/chat_session_controller/spec.md` | working | 5168 | `a1f2064ac215` |
330-
| `modules/cli/api.md` | working | 5128 | `3a2bee1158df` |
330+
| `modules/cli/api.md` | working | 5254 | `22c6dfd42b76` |
331331
| `modules/cli/inspection.md` | working | 2414 | `9199c6e04deb` |
332332
| `modules/cli/risks.md` | working | 1895 | `8620e45968f3` |
333333
| `modules/cli/spec.md` | working | 2010 | `e897ccd69471` |
@@ -550,13 +550,14 @@ Do not edit this file manually — regenerate instead.
550550
| `reviews/daily-driver-red-team-review-2026-06-02.md` | archive | 1128 | `6c888b373a62` |
551551
| `reviews/documentation-critical-questioning-2026-06-04.md` | archive | 6534 | `aa91faf505c8` |
552552
| `reviews/dogfood-g1-g22-2026-09-15-risk.md` | archive | 4163 | `34004ccff1fc` |
553+
| `reviews/dogfood-g23-g38-2026-09-16-risk.md` | archive | 5563 | `450338425f03` |
553554
| `reviews/dynamic-skill-critical-questioning-2026-06-05.md` | archive | 10579 | `7924fed20806` |
554555
| `reviews/efx-001-003-durable-effect-risk.md` | working | 4706 | `d095a036381a` |
555556
| `reviews/efx-001-003-implementation-contract-2026-08-25.md` | archive | 1343 | `bfd90d658ad6` |
556557
| `reviews/goals-instruments-2026-09-12-risk.md` | archive | 1639 | `fdecf57c92b6` |
557558
| `reviews/project-state-critical-questioning-2026-06-04.md` | archive | 7340 | `78b9b54c3a9c` |
558559
| `reviews/roadmap-intent-socratic-2026-09-09.md` | archive | 11911 | `57b215adbe19` |
559-
| `reviews/roadmap-rethink-2026-09-16.md` | archive | 27630 | `e7e640bcf0f1` |
560+
| `reviews/roadmap-rethink-2026-09-16.md` | archive | 28169 | `8c17b552efbc` |
560561
| `reviews/roadmaps-socratic-panel-2026-09-15-r10.md` | archive | 3861 | `e11b0872d78d` |
561562
| `reviews/roadmaps-socratic-panel-2026-09-15-r11.md` | archive | 1823 | `0a831c7afadf` |
562563
| `reviews/roadmaps-socratic-panel-2026-09-15-r12.md` | archive | 2308 | `790625d98890` |
@@ -577,8 +578,8 @@ Do not edit this file manually — regenerate instead.
577578
| `reviews/sec09-sec15-multisig-hardening-risk.md` | working | 11076 | `ae895567bb02` |
578579
| `reviews/security-risk-assessment-2026-06-02.md` | archive | 24112 | `4c9e2e00d001` |
579580
| `reviews/seven-control-loops-critical-questioning-2026-06-05.md` | archive | 7531 | `ae1e34b8369d` |
580-
| `roadmap-status.md` | constitution | 95823 | `8ac6c6ab9a70` |
581-
| `run-evidence-and-audit-guide.md` | working | 2158 | `9c369d008852` |
581+
| `roadmap-status.md` | constitution | 97149 | `a76ac5d2e31d` |
582+
| `run-evidence-and-audit-guide.md` | working | 2494 | `5ef9c11997d7` |
582583
| `security-whitepaper.md` | working | 9690 | `87fc3c31c4a3` |
583584
| `security/approval-abuse-cases-2026-06-02.md` | archive | 1281 | `4c43296d1c66` |
584585
| `security/audit-tamper-response.md` | working | 7972 | `1ab41b073195` |
@@ -652,14 +653,14 @@ Do not edit this file manually — regenerate instead.
652653
| `troubleshooting.md` | working | 9387 | `01d6fcbfc491` |
653654
| `tui-chat-reference.md` | working | 3298 | `1c849cfe634d` |
654655
| `tui-daily-driver-guide.md` | working | 3869 | `865f82d84d19` |
655-
| `USAGE.md` | working | 40389 | `c807e038ba57` |
656+
| `USAGE.md` | working | 40621 | `8f4f64381e25` |
656657
| `use-case-matrix.md` | working | 3807 | `7103bb3d6eee` |
657658
| `use-cases.md` | working | 19340 | `68eb4ba7da10` |
658659
| `ux-stability-contract.md` | working | 2238 | `1c5511e10ede` |
659660
| `wasm-skill-ci.md` | working | 974 | `8340d6f1e5c1` |
660661
| `work-log/adr-0031-2026-09-29-readiness-checklist.md` | archive | 2648 | `d6c389333f64` |
661662
| `work-log/documentation-optimization-work-items-2026-06-04.md` | archive | 11750 | `9233b40b0bce` |
662-
| `work-log/dogfood-findings-2026-09-15.md` | archive | 30769 | `48c38195eb08` |
663+
| `work-log/dogfood-findings-2026-09-15.md` | archive | 35616 | `693232372207` |
663664
| `work-log/fact-check-review-findings-2026-06-20.md` | archive | 3926 | `ee5ee658959e` |
664665
| `work-log/m4-approval-sliceB-blocked-2026-06-13.md` | archive | 7347 | `3981ed82bc08` |
665666
| `work-log/m4-budget-stays-inline-2026-06-13.md` | archive | 5727 | `0e7a6ee74954` |

docs/generated/release-docs-evidence.json

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
{
22
"ok": true,
3-
"created_at": "2026-09-16T13:56:03+00:00",
3+
"created_at": "2026-09-16T14:31:43+00:00",
44
"repo_root": "/Users/teee/dev/teaagent",
55
"git": {
66
"branch": "main",
7-
"commit": "96a4a8ccbdfa72d85fa8acccb0ce99ac6ec27232",
8-
"dirty": false
7+
"commit": "fb35805804e882caa3ba1a250a6a65b03b5d604b",
8+
"dirty": true
99
},
1010
"commands": [
1111
{
@@ -23,8 +23,11 @@
2323
],
2424
"docs_freshness": {
2525
"scanned": 17,
26-
"needs_attention": 0,
27-
"by_owner": {},
26+
"needs_attention": 2,
27+
"by_owner": {
28+
"daily-driver": 1,
29+
"cli": 1
30+
},
2831
"stale_threshold_days": 90
2932
},
3033
"roadmap_excerpt": {

docs/generated/release-docs-evidence.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# Release Documentation Evidence Bundle (Generated)
22

3-
**Generated:** 2026-09-16T13:56:03+00:00
4-
**Git commit:** `96a4a8ccbdfa72d85fa8acccb0ce99ac6ec27232` on `main`
5-
**Working tree dirty:** no
3+
**Generated:** 2026-09-16T14:31:43+00:00
4+
**Git commit:** `fb35805804e882caa3ba1a250a6a65b03b5d604b` on `main`
5+
**Working tree dirty:** yes
66

77
Regenerate: `python3 scripts/build_release_docs_evidence_bundle.py`
88

@@ -21,8 +21,10 @@ Regenerate: `python3 scripts/build_release_docs_evidence_bundle.py`
2121
## Documentation Freshness
2222

2323
- Current-truth docs scanned: **17**
24-
- Needs attention: **0** (>90 days)
25-
- All scanned current-truth docs are fresh.
24+
- Needs attention: **2** (>90 days)
25+
- Stale by owner surface:
26+
- `cli`: 1
27+
- `daily-driver`: 1
2628

2729
## Roadmap Excerpt
2830

0 commit comments

Comments
 (0)