Skip to content

Commit cdc2331

Browse files
johnteeecursoragent
andcommitted
feat: close S3b–S6 backlog — UX, remote approval, validators
Ship remaining work-direction items: update platform proof, claim-commit gate, suite summary artifact, conversation UX, file:// remote approval, Ed25519 signed queue writes, root-module freeze ADR, and positioning docs. Constraint: file:// remote only; WDH-002 sessions and WDF-002 re-exports deferred Tested: smoke tier 180 passed; validate_docs_consistency --test-quality-mode off Confidence: high Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent ef25605 commit cdc2331

34 files changed

Lines changed: 1216 additions & 54 deletions

.githooks/commit-msg

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,27 @@ def check_lore_trailers(commit_msg_file: str) -> int:
4949
return 0
5050

5151

52+
def check_claim_commit(commit_msg_file: str) -> int:
53+
repo_root = Path(__file__).resolve().parents[1]
54+
validate_claim = repo_root / 'scripts' / 'validate_claim_commit.py'
55+
if not validate_claim.is_file():
56+
return 0
57+
import subprocess
58+
59+
result = subprocess.run(
60+
[sys.executable, str(validate_claim), commit_msg_file],
61+
cwd=repo_root,
62+
check=False,
63+
)
64+
return int(result.returncode)
65+
66+
5267
if __name__ == '__main__':
5368
if len(sys.argv) != 2:
5469
print("Usage: commit-msg <commit-msg-file>", file=sys.stderr)
5570
sys.exit(1)
56-
57-
sys.exit(check_lore_trailers(sys.argv[1]))
71+
72+
lore_rc = check_lore_trailers(sys.argv[1])
73+
if lore_rc != 0:
74+
sys.exit(lore_rc)
75+
sys.exit(check_claim_commit(sys.argv[1]))

docs/acceptance.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ acceptance flow writes the user TUI state file. In sandboxed environments, run
4242
them with permission to bind localhost ports and write the TeaAgent state
4343
directory.
4444

45-
**Current acceptance test count: `608 passed`** (P0+P1+P2 streams finalized)
45+
**Current acceptance test count: `609 passed`** (pytest-collected guard target; suite summary at `docs/generated/suite-summary.json`, 2026-06-10)
4646

4747
## Acceptance Flows
4848

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# ADR 0030: Root Module Freeze and Canonical Package Homes
2+
3+
**Status:** Accepted
4+
**Date:** 2026-06-10
5+
**Work item:** WDF-001
6+
7+
## Context
8+
9+
The `teaagent/` package has 184 root-level modules. H4/H5 governance code
10+
sprawled across root modules (`policy_engine.py`, `rbac.py`, etc.) before
11+
consolidation into `teaagent/governance/`, `teaagent/consensus/`, and
12+
`teaagent/coordination/`.
13+
14+
## Decision
15+
16+
1. **Canonical homes**
17+
- Policy, release gates, eval gates, conversation UX → `teaagent/governance/`
18+
- Consensus validation → `teaagent/consensus/` (when wired)
19+
- Approval coordination, signed queue writes → `teaagent/coordination/`
20+
21+
2. **Root module freeze**
22+
- Baseline: **184** root modules (`teaagent/*.py`, excluding `__init__.py`).
23+
- `scripts/check_root_module_count.py` fails CI when count exceeds baseline.
24+
- New root modules require an ADR exception with explicit justification.
25+
26+
3. **WDF-002 deferred**
27+
- Deprecation re-exports for remaining H4 root modules are a follow-up; this
28+
ADR establishes the freeze without a mass move.
29+
30+
## Consequences
31+
32+
- Safer incremental consolidation without silent package growth.
33+
- New features must land in canonical subpackages first.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Competitor Survey Moratorium — 2026-06-10
2+
3+
**Work item:** WDH-001
4+
5+
## Policy
6+
7+
Stop producing **new** competitor landscape surveys until WD-A, WD-B, and WD-C
8+
execution items through S4 are closed at HEAD.
9+
10+
## Allowed exceptions
11+
12+
1. WS6-003 quarterly refresh (scheduled).
13+
2. Publication-triggered re-verify when a competitor ships a release-blocking
14+
eval gate (see [eval-gate competitor absence](eval-gate-competitor-absence-2026-06-10.md)).
15+
16+
## Rationale
17+
18+
Five review cycles agree marginal value is near zero while truth-pass and
19+
front-door work remain open. Engineering time is better spent on validators,
20+
eval gates, and stranger-test reduction.
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Eval Gate Competitor Absence Note — 2026-06-10
2+
3+
**Work item:** WDD-003
4+
**Claim class:** Competitive positioning evidence (not a product survey).
5+
6+
## Finding
7+
8+
As of 2026-06-10, TeaAgent ships a **release eval gate** (`scripts/run_release_eval_gate.py`,
9+
wired in `.github/workflows/release.yml`) with a conversational regression corpus.
10+
11+
Surveyed IDE-first agents (Cursor, Copilot, Windsurf) and hosted delegators (Codex
12+
cloud, Devin-style products) do **not** publish an equivalent **blocking release
13+
eval gate** tied to operator receipts and audit evidence. They optimize for latency,
14+
IDE integration, or hosted delegation — not governed release blocking.
15+
16+
## Inference (bounded)
17+
18+
The eval gate is a plausible public differentiator **once** S1–S3 truth work is
19+
complete and the gate stays green on release tags. This note does not claim
20+
superior model quality — only differentiated **governance-at-release**.
21+
22+
## Re-verify trigger
23+
24+
Next competitor landscape refresh (WS6-003 quarterly) or any competitor shipping a
25+
documented release-blocking eval gate.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# External User Session Protocol — 2026-06-10
2+
3+
**Work item:** WDH-002 (protocol template; sessions pending)
4+
**Status:** Ready for recruitment — **0 external sessions recorded yet**.
5+
6+
## Goal
7+
8+
Collect 3–5 recorded sessions with **non-maintainer** users against the WDC-001
9+
stranger-test protocol after WDC-002 ships.
10+
11+
## Session script (30 minutes)
12+
13+
1. Install from README quickstart (no maintainer coaching).
14+
2. Complete one happy-path task: ask → approve → undo.
15+
3. Note every concept confronted before first successful run.
16+
4. Capture: screen recording, terminal log, post-session questionnaire.
17+
18+
## Acceptance (open)
19+
20+
- Dated findings doc with ≥ 3 non-maintainer participants.
21+
- Concept count per session ≤ 3 on happy path (target).
22+
23+
## Blockers
24+
25+
External recruitment and consent workflow are out of scope for this engineering
26+
sprint; this document satisfies the **protocol** gate only.
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Stranger Test Baseline — 2026-06-10
2+
3+
**Work item:** WDC-001
4+
**Method:** Ten-minute first-session concept inventory (maintainer simulation).
5+
6+
## Baseline concept count
7+
8+
| Scope | Count | Concepts |
9+
| --- | ---: | --- |
10+
| Happy path (target) | **3** | ask, approve, undo |
11+
| Full first session (measured) | **9** | ask, approve, undo, receipt, budget, tenant, trust tier, envelope, cockpit |
12+
13+
## Reduction target
14+
15+
Ship WDC-002 progressive disclosure so strangers encounter **≤ 3** concepts on
16+
the default happy path. Advanced nouns remain available behind explicit opt-in.
17+
18+
## Evidence
19+
20+
- `teaagent/governance/conversation_ux.py``CORE_ONBOARDING_CONCEPTS`
21+
- `tests/acceptance/test_three_concept_onboarding_flow.py`

docs/generated/docs-inventory.md

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

9-
**Markdown files:** 553
9+
**Markdown files:** 558
1010

1111
| Path | Bytes | SHA256 (12) |
1212
| --- | ---: | --- |
13-
| `acceptance.md` | 20496 | `667df440e845` |
13+
| `acceptance.md` | 20565 | `c2eff7dde418` |
1414
| `adr/0001-p0-framework.md` | 3225 | `d0666420a497` |
1515
| `adr/0002-p1-primitives.md` | 2877 | `d50c03f403a6` |
1616
| `adr/0003-p2-code-mode-sandbox.md` | 3153 | `594b44eb1569` |
@@ -40,6 +40,7 @@ Do not edit this file manually — regenerate instead.
4040
| `adr/0027-context-bus-architecture.md` | 543 | `6fa1d2ced665` |
4141
| `adr/0028-tournament-swarm-architecture.md` | 594 | `ee8dec0fdb60` |
4242
| `adr/0029-consensus-validation-deferred.md` | 1587 | `8a2da40abc07` |
43+
| `adr/0030-root-module-freeze.md` | 1209 | `709d2d3cb33b` |
4344
| `adr/README.md` | 6668 | `7b2bbdfbda07` |
4445
| `agent-mode-operator-guide.md` | 2778 | `25b258ab7bfe` |
4546
| `analysis/active-findings-status-ledger-2026-06-06.md` | 4724 | `34c514f544b8` |
@@ -58,6 +59,7 @@ Do not edit this file manually — regenerate instead.
5859
| `analysis/competitor-self-comparison-matrix-2026-06-06.md` | 17130 | `739f0f18f9b1` |
5960
| `analysis/competitor-signal-survey-2026-06-04.md` | 8140 | `3805efce98e8` |
6061
| `analysis/competitor-signal-survey-2026-06-06.md` | 3692 | `0649adc7d511` |
62+
| `analysis/competitor-survey-moratorium-2026-06-10.md` | 654 | `bc6ab4f36850` |
6163
| `analysis/comprehensive-audit-2026-05-29.md` | 7547 | `3b0fbe101b40` |
6264
| `analysis/conversation-experience-refresh-2026-06-10.md` | 7243 | `06399170184e` |
6365
| `analysis/daily-driver-advice-and-recommendation-ledger-2026-06-02.md` | 7084 | `7ed55ebea494` |
@@ -97,7 +99,9 @@ Do not edit this file manually — regenerate instead.
9799
| `analysis/dynamic-skill-generation-and-long-result-audit-2026-06-05.md` | 16539 | `321a208c082b` |
98100
| `analysis/engineering-architecture-critique-2026-06-06.md` | 27959 | `01228917cd9c` |
99101
| `analysis/engineering-critique-refresh-2026-06-10.md` | 8794 | `084a230ba62d` |
102+
| `analysis/eval-gate-competitor-absence-2026-06-10.md` | 1066 | `7a4a426ebe3d` |
100103
| `analysis/eval-gate-design-2026-06-10.md` | 1432 | `ab7b4559a030` |
104+
| `analysis/external-user-session-protocol-2026-06-10.md` | 906 | `3a683d5ccd61` |
101105
| `analysis/governance-open-decisions-2026-05-31.md` | 2314 | `41bf6dbde3dc` |
102106
| `analysis/implementation-plan-overlap-review-2026-05-31.md` | 4537 | `0cc33e36385d` |
103107
| `analysis/integration-and-extensibility-critique-2026-06-06.md` | 23666 | `65bc5ef81b44` |
@@ -115,6 +119,7 @@ Do not edit this file manually — regenerate instead.
115119
| `analysis/risk-and-trust-model-critique-2026-06-06.md` | 23644 | `241755f6c294` |
116120
| `analysis/rss-failure-case-study-2026-06-05.md` | 9115 | `48ef3951c03b` |
117121
| `analysis/seven-control-loops-competitor-survey-2026-06-05.md` | 16979 | `546973a79987` |
122+
| `analysis/stranger-test-baseline-2026-06-10.md` | 726 | `28fba42eca45` |
118123
| `analysis/strategic-features-report.md` | 8925 | `8dabee942a0c` |
119124
| `analysis/strategic-plans-consolidation-decision-2026-05-31.md` | 3295 | `c4dff9938507` |
120125
| `analysis/suite-truncation-root-cause-2026-06-10.md` | 2679 | `d5c35075afaa` |
@@ -257,7 +262,7 @@ Do not edit this file manually — regenerate instead.
257262
| `guides/tool-development.md` | 11876 | `8a91be9b8be5` |
258263
| `guides/tui-chat-recipes-2026-06-02.md` | 1357 | `25e1a2287453` |
259264
| `guides/use-cases.md` | 9428 | `9a1ab24afae0` |
260-
| `guides/when-not-to-use-teaagent.md` | 2847 | `a04f2fe62889` |
265+
| `guides/when-not-to-use-teaagent.md` | 2857 | `213d1f5b9429` |
261266
| `http-surface-auth.md` | 5135 | `e5299e595353` |
262267
| `implementation/daily-driver-fix-log.md` | 978 | `474648b41793` |
263268
| `implementation/fix-log-2026-06-02.md` | 8520 | `21239812e63e` |
@@ -450,7 +455,7 @@ Do not edit this file manually — regenerate instead.
450455
| `plans/ticket-plans/WDG-002-plan.md` | 1712 | `16cb2bb47cbc` |
451456
| `plans/ux-improvement-roadmap-2026-05-31.md` | 15201 | `368416e593d4` |
452457
| `plans/work-direction-decomposition-2026-06-10.md` | 10371 | `cba4dd33a15d` |
453-
| `plans/work-direction-execution-index-2026-06-10.md` | 5135 | `586b534dbfca` |
458+
| `plans/work-direction-execution-index-2026-06-10.md` | 5539 | `e1849019fc92` |
454459
| `plugin-skill-catalog.md` | 4118 | `8d42b8f0c492` |
455460
| `processes/breaking-changes.md` | 820 | `2a43f4d37b6c` |
456461
| `processes/community-presence.md` | 5009 | `f33f69b2e8ff` |
@@ -540,7 +545,7 @@ Do not edit this file manually — regenerate instead.
540545
| `strategy/remote-multi-agent-non-goals-2026-06-06.md` | 2030 | `8597e02c0e94` |
541546
| `strategy/seven-control-loops-product-direction-2026-06-05.md` | 8051 | `d27f7734bfd9` |
542547
| `strategy/teaagent-product-principles-2026-06-04.md` | 8770 | `e7ac6d76d325` |
543-
| `terminology.md` | 4613 | `d57361b28223` |
548+
| `terminology.md` | 5281 | `a0381d2bbd5a` |
544549
| `testing/test-completion-plan-2026-06-05.md` | 9156 | `fbfd8e5a94e9` |
545550
| `testing/test-coverage-and-strategy-2026-06-02.md` | 40076 | `f429818a97ca` |
546551
| `testing/test-intent-audit-2026-06-05.md` | 32324 | `5107e8d5d233` |

docs/generated/suite-summary.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"tier": "smoke",
3+
"generated_at": "2026-06-10T02:52:26.056736+00:00",
4+
"commit": "ef2560592beb070430389dea8b0bfc53501a7d4a",
5+
"exit_code": 0,
6+
"duration_seconds": 9.66,
7+
"passed": 180,
8+
"failed": 0,
9+
"total": 180
10+
}

docs/guides/when-not-to-use-teaagent.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# When Not to Use TeaAgent
22

3-
> **Last reviewed:** 2026-06-06
4-
> **Purpose:** Honest non-fit guidance (WS6-005)
3+
> **Last reviewed:** 2026-06-10
4+
> **Purpose:** Honest non-fit guidance (WS6-005 / WDH-003)
55
66
TeaAgent is a **local-first governed harness**. Choosing the wrong tool wastes
77
everyone's time. Prefer another product when your primary need matches one of

0 commit comments

Comments
 (0)