@event4u/agent-config 3.1.1 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/.agent-src/commands/analytics/prune.md +78 -0
  2. package/.agent-src/commands/analytics/show.md +107 -0
  3. package/.agent-src/commands/analytics.md +64 -0
  4. package/.agent-src/commands/knowledge/forget.md +104 -0
  5. package/.agent-src/commands/knowledge/ingest.md +122 -0
  6. package/.agent-src/commands/knowledge/list.md +102 -0
  7. package/.agent-src/commands/knowledge.md +75 -0
  8. package/.agent-src/scripts/update_roadmap_progress.py +1 -1
  9. package/.agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  10. package/.claude-plugin/marketplace.json +8 -1
  11. package/CHANGELOG.md +38 -230
  12. package/README.md +12 -2
  13. package/dist/discovery/deprecation-report.md +1 -1
  14. package/dist/discovery/discovery-manifest.json +162 -8
  15. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  16. package/dist/discovery/discovery-manifest.summary.md +3 -3
  17. package/dist/discovery/orphan-report.md +1 -1
  18. package/dist/discovery/packs.json +12 -5
  19. package/dist/discovery/trust-report.md +2 -2
  20. package/dist/discovery/workspaces.json +11 -4
  21. package/dist/mcp/mcp-cloudflare-catalogue.json +2 -0
  22. package/dist/mcp/registry-manifest.json +5 -3
  23. package/docs/architecture.md +1 -1
  24. package/docs/archive/CHANGELOG-pre-3.2.0.md +268 -0
  25. package/docs/catalog.md +9 -2
  26. package/docs/contracts/CHANGELOG-conventions.md +19 -0
  27. package/docs/contracts/at-rest-encryption.md +146 -0
  28. package/docs/contracts/daily-workspace.md +137 -0
  29. package/docs/contracts/explain-modes.md +146 -0
  30. package/docs/contracts/host-agent-protocol.md +88 -0
  31. package/docs/contracts/local-analytics.md +148 -0
  32. package/docs/contracts/local-knowledge-ingestion.md +96 -0
  33. package/docs/contracts/role-experience.md +121 -0
  34. package/docs/contracts/workspace-documents.md +140 -0
  35. package/docs/decisions/ADR-022-daily-workspace-decomposition.md +140 -0
  36. package/docs/decisions/ADR-023-host-agent-protocol.md +129 -0
  37. package/docs/decisions/ADR-024-workspace-v0-feature-floor.md +126 -0
  38. package/docs/decisions/ADR-025-workspace-chrome.md +119 -0
  39. package/docs/decisions/ADR-026-explain-mode-translation.md +117 -0
  40. package/docs/deploy/small-team-recipe.md +148 -0
  41. package/docs/deploy/team-deployment-posture.md +91 -0
  42. package/docs/getting-started-by-role.md +27 -0
  43. package/docs/getting-started.md +1 -1
  44. package/docs/guides/local-analytics.md +125 -0
  45. package/docs/guides/local-knowledge.md +127 -0
  46. package/package.json +4 -2
  47. package/scripts/__pycache__/validate_frontmatter.cpython-312.pyc +0 -0
  48. package/scripts/_lib/__pycache__/__init__.cpython-312.pyc +0 -0
  49. package/scripts/_lib/__pycache__/agent_src.cpython-312.pyc +0 -0
  50. package/scripts/_lib/changelog_eras.py +330 -0
  51. package/scripts/memory_lookup.py +78 -1
  52. package/scripts/release.py +93 -3
@@ -0,0 +1,119 @@
1
+ ---
2
+ adr: 025
3
+ status: accepted
4
+ date: 2026-05-24
5
+ decision: workspace-chrome
6
+ supersedes: —
7
+ superseded_by: —
8
+ phase: v3.x · employee-product-and-external-proof Phase 4
9
+ type: forward-looking
10
+ ---
11
+
12
+ # ADR-025 — Workspace chrome — browser tab against the installer GUI
13
+
14
+ ## Status
15
+
16
+ **Accepted** · 2026-05-24. Third of three sub-ADRs created by
17
+ [`ADR-022`](ADR-022-daily-workspace-decomposition.md), depends on
18
+ [`ADR-023`](ADR-023-host-agent-protocol.md) (protocol) and
19
+ [`ADR-024`](ADR-024-workspace-v0-feature-floor.md) (feature floor).
20
+ Picks the UI shape that wraps the v0 feature floor.
21
+
22
+ ## Context
23
+
24
+ The original Phase 4 question framed chrome as a four-way pick:
25
+
26
+ | Option | Pitch |
27
+ |---|---|
28
+ | **(a) Extend installer GUI** | Reuse `packages/core/installer/src/gui/`, add workspace routes. Same loopback server, same CSRF gate, same browser. |
29
+ | **(b) Electron / Tauri desktop app** | Native shell, OS integration (tray icon, hotkeys, autostart). |
30
+ | **(c) Browser tab against the installer GUI** | Same as (a) on the runtime side, but framed as a standalone surface (`/workspace`) the user bookmarks. |
31
+ | **(d) TUI-first** | Terminal UI, optional browser companion. Lowest install footprint. |
32
+
33
+ The council demanded ADRs 023 and 024 land first. With those in
34
+ place: the v0 surface is three small features (launcher, JSONL log,
35
+ knowledge stub) talking to a CLI subprocess. There is no need for
36
+ OS-level integration, no native APIs to call, no real-time low-latency
37
+ rendering. The installer already ships a loopback HTTP + CSRF +
38
+ browser-launch path ([`docs/contracts/gui-wizard.md`](../contracts/gui-wizard.md)).
39
+
40
+ ## Decision
41
+
42
+ Ship workspace v0 as **(c) — a browser tab against the installer
43
+ GUI**.
44
+
45
+ Concretely:
46
+
47
+ - New route group `/workspace` inside the existing
48
+ `packages/core/installer/src/gui/server.ts` Node server (single
49
+ process, single CSRF token, same loopback bind).
50
+ - `npx @event4u/agent-config workspace` opens the browser at the
51
+ `/workspace` route — same launch UX as `init --gui`, different
52
+ default landing page.
53
+ - Per-user state lives under `~/.event4u/agent-config/workspace/`
54
+ (sessions JSONL + inbox files per ADR-024).
55
+ - The installer GUI and the workspace UI **share the same shell**
56
+ (header, identity strip, theme) so a user installing for the
57
+ first time sees the workspace as the natural next surface.
58
+
59
+ ### Why this option
60
+
61
+ - **(c)** is the only option that reuses the proven loopback +
62
+ CSRF + browser-launch path. Zero new infrastructure surface.
63
+ - **(a)** is functionally identical at runtime — the only delta is
64
+ framing. The framing matters: a user-facing "workspace" needs its
65
+ own URL and bookmark story. (c) gets that for free.
66
+ - **(b)** Electron / Tauri adds a ~150 MB install, a code-signing
67
+ story, an autoupdate channel, and a native event loop. None of
68
+ that is needed for the v0 floor; deferred to v1 if recruit
69
+ sessions surface OS-integration demand.
70
+ - **(d)** TUI-first is intriguing for the developer audience but
71
+ excludes the non-developer roles (galabau owner, content creator,
72
+ consultant) named in Phase 1 — the audience this roadmap is for.
73
+
74
+ ### Hard rule: no chrome rewrite without recruit-session signal
75
+
76
+ The chrome choice does **not** survive the recruit sessions
77
+ silently. If Phase 1 (recruit sessions) surfaces a hard "browser
78
+ tabs are wrong" signal from ≥ 2 of the 3 cohorts, this ADR is
79
+ superseded by a new ADR-027 before any further work on the chrome.
80
+ A maintainer note (not a vendor lock-in) ensures the rewrite can
81
+ happen at v0.5, not v2.
82
+
83
+ ## Consequences
84
+
85
+ **Positive**
86
+
87
+ - Zero new infrastructure. Installer GUI is the substrate.
88
+ - Cross-platform for free (browser).
89
+ - One CSRF / port / bind story across installer + workspace —
90
+ one audit surface, one threat model.
91
+
92
+ **Negative**
93
+
94
+ - No native OS hooks (tray icon, global hotkey, autostart). Users
95
+ must manually run `npx ... workspace` to open the tab.
96
+ - Browser-tab UX has a "where did my workspace go?" failure mode
97
+ when the tab is closed. Mitigated by a persistent bookmark and a
98
+ reopen-on-launch flag in `.agent-settings.yml`.
99
+ - Electron / Tauri loyalists will read this as conservative; the
100
+ v1 ADR can reopen if signal supports it.
101
+
102
+ **Reversal cost** — medium. Migrating from browser-tab to native
103
+ requires re-implementing the shell and the asset bundling pipeline,
104
+ but the underlying state model (filesystem JSONL + inbox) is shell-
105
+ agnostic.
106
+
107
+ ## Open questions (post-recruit-session)
108
+
109
+ - Tray-icon / autostart story (Phase 1 + Phase 4 v0.5 — defer).
110
+ - Multi-tenant browser surface for the deployed `agent-config`
111
+ topology (covered by [`ADR-021`](ADR-021-deployment-shape.md);
112
+ v0 is single-user local only).
113
+
114
+ ## Cross-references
115
+
116
+ - Predecessor ADRs: [`ADR-022`](ADR-022-daily-workspace-decomposition.md), [`ADR-023`](ADR-023-host-agent-protocol.md), [`ADR-024`](ADR-024-workspace-v0-feature-floor.md).
117
+ - GUI wizard substrate: [`docs/contracts/gui-wizard.md`](../contracts/gui-wizard.md).
118
+ - Installer architecture: [`ADR-016`](ADR-016-installer-architecture.md).
119
+ - Deployment shape: [`ADR-021`](ADR-021-deployment-shape.md).
@@ -0,0 +1,117 @@
1
+ ---
2
+ adr: 026
3
+ status: accepted
4
+ date: 2026-05-24
5
+ decision: explain-mode-translation
6
+ supersedes: —
7
+ superseded_by: —
8
+ phase: v3.x · employee-product-and-external-proof Phase 6
9
+ type: forward-looking
10
+ ---
11
+
12
+ # ADR-026 — Explain-mode translation — plain as a renderer, not a new pipeline
13
+
14
+ ## Status
15
+
16
+ **Accepted** · 2026-05-24. Phase 6 design. Depends on the existing
17
+ `explain-v1` envelope shape stabilized in `agent-memory` 3.0 and the
18
+ workspace surface from [`ADR-025`](ADR-025-workspace-chrome.md).
19
+
20
+ ## Context
21
+
22
+ Feedback A names the technical explain-trace as a non-technical-employee
23
+ barrier. Today the right rail shows `trust_score: 0.74`,
24
+ `promotion_history: [...]`, `contradictions: 0` — vocabulary that
25
+ assumes the reader knows the memory model. For galabau, content-creator,
26
+ and consultant roles, this is opaque.
27
+
28
+ Two options surveyed:
29
+
30
+ | Option | Pitch | Cost |
31
+ |---|---|---|
32
+ | **(a) Second MCP surface** | Add `memory_explain_plain` returning a pre-translated envelope. | New endpoint, new schema, drift risk between two surfaces, requires MCP version bump. |
33
+ | **(b) Renderer over existing envelope** | Treat plain mode as a pure rendering function over the existing `explain-v1` envelope. Per-role glossary overrides labels. | Zero MCP change, zero data drift, zero schema bump. Renderer testable with fixtures. |
34
+
35
+ ## Decision
36
+
37
+ Ship Phase 6 plain mode as **(b) — a pure renderer over the existing
38
+ `explain-v1` envelope**.
39
+
40
+ Concretely:
41
+
42
+ - `renderExplain(envelope, { mode, glossary?, locale? })` is a pure
43
+ function in `packages/core/src/workspace/explain/`.
44
+ - Two modes: `technical` (current surface, verbatim) and `plain`
45
+ (4 labelled paragraphs: where from, how confident, when reviewed,
46
+ what's contested).
47
+ - 4-band confidence label (Very High / High / Medium / Low) with
48
+ default thresholds per [`docs/contracts/explain-modes.md`](../contracts/explain-modes.md);
49
+ thresholds overridable per role.
50
+ - 3-band freshness label (Fresh / Aging / Stale) from `decay.applied_factor`.
51
+ - Per-role `agents/roles/<role>/explain-glossary.yml` overrides
52
+ default labels and band thresholds. Glossary YAMLs are the
53
+ one carve-out from the `.md`-must-be-English rule for role-native
54
+ rendered strings.
55
+ - `/why` quick command available to every role; resolves `mem://<id>`
56
+ markers in the last reply and calls `memory_explain` per id, then
57
+ renders in the active mode.
58
+
59
+ ## Why (b)
60
+
61
+ - **Zero MCP drift.** One envelope, two views. No risk of plain
62
+ text saying something the engineer view contradicts.
63
+ - **Testable.** Pure function over fixtures. Golden tests cover
64
+ high-trust, low-trust, contradicted, recently-promoted, deprecated.
65
+ - **No version bump.** `agent-memory` MCP surface stays at the
66
+ current contract; consumers running older clients still see the
67
+ technical envelope unchanged.
68
+ - **Glossary carve-out is bounded.** Only the `explain-glossary.yml`
69
+ per role holds runtime strings in role-native language; the
70
+ contract `.md`, the ADR, the renderer code stay English.
71
+
72
+ ## Why not (a)
73
+
74
+ - A second MCP endpoint duplicates the envelope shape and creates
75
+ two surfaces that must stay in sync. Drift will land within one
76
+ release.
77
+ - Schema bump on `agent-memory` cascades to every downstream package
78
+ consuming the MCP; Phase 6 is not the right time to force that.
79
+
80
+ ## Consequences
81
+
82
+ **Positive**
83
+
84
+ - Plain mode lands as a renderer change, no MCP version bump.
85
+ - Per-role glossary opens the door for the recruit-session
86
+ participants (Phase 1) to localize the plain surface without a
87
+ code change.
88
+ - Technical mode survives unchanged for engineering-lead role.
89
+
90
+ **Negative**
91
+
92
+ - Plain mode is downstream of envelope shape; an `explain-v2`
93
+ envelope (next major) requires updating the renderer too. Cost
94
+ is bounded — the renderer is one file.
95
+ - Glossary localization can drift from English defaults if a role
96
+ ships a partial override. Mitigated by the renderer falling back
97
+ to defaults for missing keys.
98
+
99
+ **Reversal cost** — low. Replacing (b) with (a) later if the
100
+ renderer surface grows beyond pure rendering (e.g. needs a different
101
+ data fetch) requires only adding the second MCP endpoint; existing
102
+ glossary YAMLs translate forward.
103
+
104
+ ## Open questions (deferred)
105
+
106
+ - Localization of the technical view (today: English only). Out of
107
+ scope for v0; deferred until ≥ 1 recruit-session participant
108
+ asks for it.
109
+ - Audio / spoken-mode rendering of the plain envelope for the
110
+ consultant-on-the-road role. Defer to a future ADR.
111
+
112
+ ## Cross-references
113
+
114
+ - Contract: [`docs/contracts/explain-modes.md`](../contracts/explain-modes.md).
115
+ - Envelope: [`docs/contracts/agent-memory-contract.md`](../contracts/agent-memory-contract.md).
116
+ - Workspace: [`ADR-025`](ADR-025-workspace-chrome.md), [`docs/contracts/daily-workspace.md`](../contracts/daily-workspace.md).
117
+ - Roles: [`docs/contracts/role-experience.md`](../contracts/role-experience.md).
@@ -0,0 +1,148 @@
1
+ # Small-Team Recipe — 3–10 people, no code change
2
+
3
+ > **Status** · v0 · 2026-05-24. Phase 9 of
4
+ > [`road-to-employee-product-and-external-proof.md`](../../agents/roadmaps/road-to-employee-product-and-external-proof.md).
5
+ > The recipe relies entirely on **existing primitives**. No new
6
+ > code, no new server, no shared backend. Each user runs the
7
+ > workspace locally; the team shares the inputs.
8
+
9
+ ## Audience
10
+
11
+ A team of 3–10 people in one organisation that wants every member
12
+ to use agent-config as their daily AI tool, with **shared prompts**,
13
+ **shared role experiences**, and **shared knowledge sources** —
14
+ but where buying / running a central server is not justified.
15
+
16
+ Examples this recipe is sized for:
17
+
18
+ - A 4-person landscape-gardening business (one owner, three foremen).
19
+ - A 6-person content team at a small agency.
20
+ - A 5-person consulting partnership.
21
+
22
+ ## Architecture in one picture
23
+
24
+ ```
25
+ ┌─ shared NAS / SharePoint / Dropbox ──────────────────────────┐
26
+ │ knowledge/ │
27
+ │ ├── handbuch.pdf │
28
+ │ ├── offer-templates/ │
29
+ │ └── customer-history/ │
30
+ └───────────────────────────────────────────────────────────────┘
31
+ ▲ ▲
32
+ │ each user mounts │
33
+ │ │
34
+ ┌──────────────────────┴──┐ ┌─────────────────┴─────────┐
35
+ │ Person A laptop │ │ Person B laptop │
36
+ │ workspace + local │ │ workspace + local │
37
+ │ knowledge index (per- │ │ knowledge index (per- │
38
+ │ user, ingested from NAS) │ │ user, ingested from NAS) │
39
+ └─────────────┬─────────────┘ └────────────┬──────────────┘
40
+ │ │
41
+ └──────── git pull / push ─────┘
42
+
43
+
44
+ ┌───────────┴────────────────┐
45
+ │ Shared `agents/overrides/`│
46
+ │ git repo (private) │
47
+ │ ├── prompts/ │
48
+ │ ├── roles/ │
49
+ │ └── glossaries/ │
50
+ └─────────────────────────────┘
51
+ ```
52
+
53
+ ## Set up the shared overrides repo
54
+
55
+ One person does this once:
56
+
57
+ 1. Create a **private** git repo, e.g. `internal-agent-pack`.
58
+ 2. Inside, mirror the structure of the package's `agents/overrides/`:
59
+ `prompts/`, `roles/`, `glossaries/`.
60
+ 3. Add the team's role experiences (Phase 3 of the roadmap):
61
+ one folder per role under `roles/<role>/` with `index.md`,
62
+ `skills.yml`, `prompts/`, and (Phase 6) `explain-glossary.yml`.
63
+ 4. Push to the team's git host. Grant read access to every team
64
+ member, write access to the maintainers.
65
+
66
+ Each team member then:
67
+
68
+ ```bash
69
+ git clone <repo> ~/internal-agent-pack
70
+ ln -s ~/internal-agent-pack/prompts ~/.event4u/agent-config/overrides/prompts
71
+ ln -s ~/internal-agent-pack/roles ~/.event4u/agent-config/overrides/roles
72
+ ln -s ~/internal-agent-pack/glossaries ~/.event4u/agent-config/overrides/glossaries
73
+ ```
74
+
75
+ `git pull` from anywhere on the team rolls out new prompts /
76
+ glossaries to every laptop without any code change.
77
+
78
+ ## Set up shared knowledge
79
+
80
+ Pick one shared mount the whole team has read access to: NAS,
81
+ SharePoint mounted via DAV, Dropbox, Google Drive desktop sync.
82
+ Anything that surfaces as a file path.
83
+
84
+ Each team member runs once:
85
+
86
+ ```bash
87
+ npx @event4u/agent-config knowledge:ingest /Volumes/team-share/knowledge
88
+ ```
89
+
90
+ Per-user index. Same content. When new files land on the share,
91
+ each user re-runs the ingest (Phase 2 will add a watcher later).
92
+
93
+ ## Daily flow per team member
94
+
95
+ ```bash
96
+ npx @event4u/agent-config workspace
97
+ ```
98
+
99
+ Opens the browser tab. Launcher shows the team's role experiences
100
+ (from the shared overrides). Click a task → workspace shells out
101
+ to the user's Tier-1 host (Claude Code / Codex / Gemini) or writes
102
+ to the inbox for Tier-3 hosts. Documents land under
103
+ `~/.event4u/agent-config/workspace/documents/`, **encrypted at
104
+ rest** (Phase 8) with the user's per-machine key.
105
+
106
+ Output documents are local to each user. The team shares **inputs**
107
+ (prompts, role experiences, knowledge sources). The team does
108
+ **not** share **outputs** (offers, mails, memos) through this
109
+ recipe — those are user-private until manually saved to the team
110
+ share.
111
+
112
+ ## Optional: publish the overrides as an npm pack
113
+
114
+ Once the shared overrides repo is stable, the maintainer may
115
+ publish it as a thin npm package:
116
+
117
+ ```bash
118
+ # inside the overrides repo
119
+ npm init --scope=@your-org
120
+ # package.json names: "@your-org/agent-config-team"
121
+ npm publish --access restricted
122
+ ```
123
+
124
+ New team members then `npm install --global @your-org/agent-config-team`
125
+ instead of cloning the repo. The package's `postinstall` script
126
+ creates the same symlinks. This is **optional**; the git-clone path
127
+ above works fine.
128
+
129
+ ## What this recipe does not give you
130
+
131
+ - **No SSO.** Each user authenticates to their host agent (Claude
132
+ Code, etc.) independently.
133
+ - **No central policy enforcement.** Overrides ship via git; users
134
+ can locally edit them.
135
+ - **No shared output store.** Customer-facing documents stay on the
136
+ user's laptop. If the team needs shared output, they save / commit
137
+ the document file to the team share manually.
138
+ - **No org-mode threat model.** This recipe is single-user-per-machine
139
+ with team-level input sharing. The org-mode threats (cross-user
140
+ policy enforcement, audit log centralisation) are explicitly out
141
+ of scope; see [`team-deployment-posture`](team-deployment-posture.md).
142
+
143
+ ## Cross-references
144
+
145
+ - Posture: [`team-deployment-posture`](team-deployment-posture.md).
146
+ - Workspace: [`docs/contracts/daily-workspace.md`](../contracts/daily-workspace.md).
147
+ - Knowledge ingestion: [`docs/contracts/local-knowledge-ingestion.md`](../contracts/local-knowledge-ingestion.md).
148
+ - Role experiences: [`docs/contracts/role-experience.md`](../contracts/role-experience.md).
@@ -0,0 +1,91 @@
1
+ # Team Deployment Posture
2
+
3
+ > **Status** · v0 · 2026-05-24. Phase 9 of
4
+ > [`road-to-employee-product-and-external-proof.md`](../../agents/roadmaps/road-to-employee-product-and-external-proof.md).
5
+ > Codifies what is shipped today, what stays cancelled-with-reason,
6
+ > and what is reachable via existing primitives — so feedback rounds
7
+ > 9+ asking "team SSO when?" land on a written answer.
8
+
9
+ ## Where agent-config sits today
10
+
11
+ | Surface | Status |
12
+ |---|---|
13
+ | Single-user workspace | **Shipped** (Phases 4–7 of this roadmap, single-user / single-machine) |
14
+ | Small-team via shared overrides | **Shipped** (existing primitives — see [`small-team-recipe`](small-team-recipe.md)) |
15
+ | Organization mode (SSO, central policy, OAuth connectors) | **Cancelled-with-reason** — tracked in successor roadmap stubs |
16
+
17
+ ## Shipped — what works today
18
+
19
+ The phases below this section, once implemented, deliver:
20
+
21
+ - A daily workspace browser tab (Phase 4) — per-user, local-only.
22
+ - Document workflows (Phase 5) — offer / mail / memo / brief /
23
+ video-script with local revision history and export.
24
+ - Plain explain mode (Phase 6) — role-aware translation of the
25
+ memory-trust surface.
26
+ - Local analytics (Phase 7) — top prompts, completion rate,
27
+ session length; never leaves the machine.
28
+ - At-rest encryption (Phase 8) — AES-256-GCM with OS keyring,
29
+ default on from workspace v1.0.
30
+
31
+ All of these run on **one machine, one OS user, one workspace**. No
32
+ remote backend. No shared state. No sign-on screen.
33
+
34
+ ## Reachable via existing primitives — small-team mode
35
+
36
+ A team of 3–10 people can use the package collaboratively today
37
+ without any code change, by leaning on three existing primitives:
38
+
39
+ | Primitive | What it gives the team |
40
+ |---|---|
41
+ | `agents/overrides/` repo, shared via git | Shared prompts, role experiences, glossaries, skills overrides |
42
+ | Knowledge ingestion from a shared NAS / SharePoint mount | Each user runs `/knowledge:ingest` against the same mount; per-user index, same content |
43
+ | Manual prompt-pack distribution via npm `@event4u/agent-config-<team>` | Team publishes a thin pack of role experiences as a private npm package |
44
+
45
+ The recipe lives in [`small-team-recipe`](small-team-recipe.md).
46
+
47
+ ## Cancelled-with-reason — organization mode
48
+
49
+ The prior archived `road-to-internal-ai-os-deployment.md` Phases 2–5
50
+ were cancelled under Hard-Floor (no real first customer, no audit
51
+ funding, no recruit-session signal). Phase 9 **does not reactivate
52
+ them**. The cancellations stand:
53
+
54
+ | Cancelled surface | Reason | Successor roadmap (stub) |
55
+ |---|---|---|
56
+ | **SSO / OIDC sign-on** | No customer requires it. Auth surface is auth-adjacent — `engineering-safety-floor` Hard-Floor on adoption without a funded security audit. | `road-to-team-sso.md` |
57
+ | **Central policy enforcement** | Multi-tenant policy without SSO is a half-solution. Wait for SSO. | `road-to-central-policy.md` |
58
+ | **Team-shared overrides server** | Shared-overrides-via-git already works for the small-team case. Server only makes sense once the org-mode threshold is reached. | `road-to-team-context.md` |
59
+ | **OAuth connectors (Google, Slack, M365)** | Per-connector OAuth flow is a permanent footprint we can't ship without an org user agreeing to scope it. | `road-to-internal-connectors.md` |
60
+
61
+ Each successor roadmap is an empty-named stub today; activation
62
+ requires a recruited team customer plus a human-reviewed security
63
+ audit. Until then, the answer to "team SSO when?" is: **not on this
64
+ package, not on this roadmap**.
65
+
66
+ ## Decision posture going forward
67
+
68
+ - **Default answer to org-mode requests**: point at this document.
69
+ Do not re-open the cancellation without a recruited customer +
70
+ funded audit.
71
+ - **Default answer to small-team requests**: point at
72
+ [`small-team-recipe`](small-team-recipe.md). The recipe is
73
+ sufficient for 3–10 people, no code change required.
74
+ - **Default answer to single-user requests**: workspace + Phases
75
+ 4–7 deliver the daily experience.
76
+
77
+ The Hard-Floor item stays in force. Nothing in Phase 9 lifts it.
78
+ The successor roadmap stubs exist so cross-references resolve and
79
+ so a future maintainer (or external contributor with funding) can
80
+ pick them up without re-deriving the cancellation rationale.
81
+
82
+ ## Cross-references
83
+
84
+ - Recipe: [`small-team-recipe`](small-team-recipe.md).
85
+ - Archived: `agents/roadmaps/archive/road-to-internal-ai-os-deployment.md`.
86
+ - Stubs (created by Phase 9 Step 4):
87
+ - `agents/roadmaps/stubs/road-to-team-sso.md`
88
+ - `agents/roadmaps/stubs/road-to-central-policy.md`
89
+ - `agents/roadmaps/stubs/road-to-team-context.md`
90
+ - `agents/roadmaps/stubs/road-to-internal-connectors.md`
91
+ - Engineering safety floor: [`.augment/rules/non-destructive-by-default.md`](../../.augment/rules/non-destructive-by-default.md).
@@ -8,10 +8,14 @@
8
8
 
9
9
  > **Eval-gated messaging note.** Until `task bench --corpus non-dev` reports `selection_accuracy >= 0.60` (step-12 Phase 1 exit), this page is documentation, not marketing. The skills listed below are the candidates the corpus tests against; their description quality is what the eval validates.
10
10
 
11
+ > **Deployment posture.** Single-user workspace today (one machine, one user — `npx @event4u/agent-config init`). Small team today (3–10 people) via shared `agents/overrides/` Git repo + shared NAS for knowledge — recipe: [`docs/deploy/small-team-recipe.md`](deploy/small-team-recipe.md). Organization mode (SSO · central policy · team context · internal connectors) is **not started** — tracked under [`agents/roadmaps/stubs/`](../agents/roadmaps/stubs/README.md) with explicit gating (recruited customer + funded audit + maintainer ADR). Rationale: [`docs/deploy/team-deployment-posture.md`](deploy/team-deployment-posture.md).
12
+
11
13
  ---
12
14
 
13
15
  ## Creator (writer, marketer, indie content shop)
14
16
 
17
+ > **Tailored role experience available →** [`agents/roles/content-creator/`](../agents/roles/content-creator/index.md) — three first tasks, priority-ordered skill shortlist, prompt scaffolds. Status `draft` until recruit-session 02 lands.
18
+
15
19
  **You want this if:** you draft blog posts, marketing emails, launch copy, or release announcements and want a writing assistant that holds a defined brand voice across surfaces. You need brand-voice discipline more than code-quality enforcement. You will spend most of your time in Claude Desktop / ChatGPT, not in a terminal.
16
20
 
17
21
  - [`voice-and-tone-design`](../.agent-src/skills/voice-and-tone-design/SKILL.md) — define and audit brand voice (voice attributes, tone-by-context matrix).
@@ -30,6 +34,13 @@ Cinematic-blueprint approach: the agent expands your script into a 12-block scen
30
34
 
31
35
  `AIV_DRYRUN=true` is the mandatory default — no provider call, no spend until you opt in.
32
36
 
37
+ **Worked example — one-line idea to stitched cut, four commands:**
38
+
39
+ 1. `/video:from-script "kurzes Werbevideo für ein Galabau-Projekt"` — agent expands the one-line idea into a 12-block blueprint, locks the character identity, and prints the provider-tuned prompt set.
40
+ 2. `/video:storyboard` — review the 12-block scene plan before any provider call; edit blocks inline (camera, lighting, blocking, motion) until the storyboard reads as intended.
41
+ 3. `/video:scene` — render one scene at a time against the configured provider adapter; iterate on the motion + audio prompt without paying for the full clip.
42
+ 4. `/video:stitch` — assemble the rendered scenes into the final clip via ffmpeg, with the character-lock JSON enforcing identity across cuts.
43
+
33
44
  **Try the first win →** [`pack-ai-video/FIRST_WIN.md`](../packages/pack-ai-video/FIRST_WIN.md) — one-line idea to a provider-tuned motion prompt in ~12 minutes.
34
45
 
35
46
  > **What this is not:** the package does **not** host a video model. It orchestrates prompts against the provider you select (Veo, Kling, Sora, Runway, …). Trust level is set by the provider's adapter lifecycle tier — see [`provider-lifecycle-discipline`](../.agent-src/rules/provider-lifecycle-discipline.md). You pay the provider directly, the package never sees your API key.
@@ -66,6 +77,8 @@ Cinematic-blueprint approach: the agent expands your script into a 12-block scen
66
77
 
67
78
  ## Consultant (advisory, freelance, fractional)
68
79
 
80
+ > **Tailored role experience available →** [`agents/roles/consultant/`](../agents/roles/consultant/index.md) — three first tasks (client-brief refinement, investor memo, deck outline), priority-ordered skill shortlist. Status `draft` until recruit-session 03 lands.
81
+
69
82
  **You want this if:** you sell discovery, positioning, competitive analysis, or roadmap audits. Output is briefs and slide content for a client, not code. You need defensible methodology behind every deliverable.
70
83
 
71
84
  - [`discovery-interview`](../.agent-src/skills/discovery-interview/SKILL.md) — switch-event JTBD guides, bias audit, falsifiable hypothesis.
@@ -76,6 +89,20 @@ Cinematic-blueprint approach: the agent expands your script into a 12-block scen
76
89
 
77
90
  ---
78
91
 
92
+ ## Galabau owner (Garten- und Landschaftsbau, small-business operator)
93
+
94
+ > **Tailored role experience available →** [`agents/roles/galabau/`](../agents/roles/galabau/index.md) — three first tasks (offer drafting, customer-email reply, project-brief refinement), priority-ordered skill shortlist. Status `draft` until recruit-session 01 lands.
95
+
96
+ **You want this if:** you run or co-run a small Garten-und-Landschaftsbau shop and draft customer offers, customer emails, and project briefs every week — usually after the on-site day is done. You want a writing assistant that knows your tone, holds it across customers, and turns a one-paragraph project sketch into a structured document you can send the next morning.
97
+
98
+ - [`refine-prompt`](../.agent-src/skills/refine-prompt/SKILL.md) — tighten fuzzy customer briefs before any drafting so the agent does not invent scope.
99
+ - [`voice-and-tone-design`](../.agent-src/skills/voice-and-tone-design/SKILL.md) — lock the shop tone so offers and emails read consistent across customers.
100
+ - [`doc-coauthoring`](../.agent-src/skills/doc-coauthoring/SKILL.md) — section-by-section drafting for longer offers; never one giant generation.
101
+
102
+ **Install path:** **MCP recommended.** Claude Desktop opens, the package shows up as a tool, no terminal required. See [`docs/mcp.md`](mcp.md). CLI install is the right path only if you also sit in this repo with code-shaped work.
103
+
104
+ ---
105
+
79
106
  ## Go-To-Market (sales, marketing ops, RevOps)
80
107
 
81
108
  **You want this if:** you own pipeline shape, forecast accuracy, launch sequencing, or post-launch comms. You need deal-level rigor (MEDDIC, exit criteria) and narrative skills (release comms, messaging) in the same agent.
@@ -146,7 +146,7 @@ Your agent now understands slash commands:
146
146
  | `/quality-fix` | Run and fix all quality checks |
147
147
  | `/chat-history` | Inspect the persistent chat-history log (read-only `show`) |
148
148
 
149
- → [Browse all 129 active commands](../.agent-src/commands/)
149
+ → [Browse all 136 active commands](../.agent-src/commands/)
150
150
 
151
151
  ---
152
152
 
@@ -0,0 +1,125 @@
1
+ # Local analytics — a 3-minute walkthrough
2
+
3
+ > Phase 7 of [`road-to-employee-product-and-external-proof`](../../agents/roadmaps/road-to-employee-product-and-external-proof.md).
4
+ > Contract: [`docs/contracts/local-analytics.md`](../contracts/local-analytics.md).
5
+
6
+ ## What this is
7
+
8
+ A **local-only** event log of your workspace activity. The package never
9
+ POSTs these records anywhere. Storage is a single append-only JSONL file
10
+ under your home directory; pruning is a 90-day rolling window.
11
+
12
+ If you want to know *"which prompts do I actually run on Tuesday
13
+ mornings?"* — this is the file that knows. If you don't want that
14
+ question answered, flip one flag and the file never opens.
15
+
16
+ ## Where it lives
17
+
18
+ ```
19
+ ~/.event4u/agent-config/workspace/analytics/
20
+ ├── events.jsonl # one workspace_event/v0 record per line
21
+ └── retention.lock # presence = a prune pass is running
22
+ ```
23
+
24
+ One event per line. Schema is `workspace_event/v0` (matches the
25
+ 3.1.0 telemetry SDK vocabulary, but the transports never touch each
26
+ other — the SDK is the undeployed Worker surface, this is your disk).
27
+
28
+ ## What's collected
29
+
30
+ Closed event set (rejected if not on the list):
31
+
32
+ | Event | When |
33
+ |---|---|
34
+ | `launcher.opened` | Workspace tab opens. |
35
+ | `launcher.task_picked` | User clicks a task in the launcher. |
36
+ | `launcher.task_launched` | Host agent receives the rendered prompt. |
37
+ | `session.started` / `session.host_turn` / `session.completed` | Conversation lifecycle. |
38
+ | `document.created` / `document.edited` / `document.exported` | Phase 5 document workflows. |
39
+ | `explain.opened` / `explain.mode_toggled` / `why.invoked` | Phase 6 explain mode. |
40
+ | `knowledge.queried` / `knowledge.source_clicked` | Phase 2 knowledge pane interactions. |
41
+
42
+ Each record carries a UTC timestamp, the schema version, and a tiny
43
+ `data` dict (role, task, host_tier, duration_ms — never prompt or
44
+ response bodies).
45
+
46
+ ## How to read it
47
+
48
+ ```bash
49
+ # Render the last 30 days as markdown
50
+ python3 packages/core/installer/python/workspace_analytics.py show
51
+
52
+ # Last 24 h, JSON
53
+ python3 packages/core/installer/python/workspace_analytics.py show \
54
+ --window 24h --format json
55
+
56
+ # Filter to one role
57
+ python3 packages/core/installer/python/workspace_analytics.py show \
58
+ --role tradesperson --format csv
59
+ ```
60
+
61
+ Output shape (markdown):
62
+
63
+ ```
64
+ # Workspace analytics — last 30d
65
+
66
+ ## Top prompts
67
+
68
+ - `tradesperson` · `estimate` — 12
69
+ - `content-creator` · `script-video` — 7
70
+ - `consultant` · `weekly-memo` — 4
71
+
72
+ ## Launcher → completion rate per role
73
+
74
+ - `tradesperson` — 83% (12 launched · 10 completed)
75
+ - `content-creator` — 71% (7 launched · 5 completed)
76
+
77
+ **Average session length:** 3m 41s
78
+ **Knowledge sources clicked:** 14
79
+ ```
80
+
81
+ ## How to opt out
82
+
83
+ Two equivalent switches — either short-circuits before any file opens.
84
+
85
+ ```bash
86
+ # Env (per-shell)
87
+ export AGENT_CONFIG_NO_LOCAL_ANALYTICS=1
88
+ ```
89
+
90
+ ```yaml
91
+ # .agent-settings.yml (per-project)
92
+ analytics:
93
+ local: off
94
+ ```
95
+
96
+ After either is in effect, `emit()` returns `False` and the JSONL is
97
+ never appended. The `show` command still works against existing data,
98
+ so you can opt out without losing what you already have.
99
+
100
+ ## How to delete it
101
+
102
+ The file is plain JSONL. Delete it:
103
+
104
+ ```bash
105
+ rm -rf ~/.event4u/agent-config/workspace/analytics/
106
+ ```
107
+
108
+ Or prune the rolling window manually:
109
+
110
+ ```bash
111
+ python3 packages/core/installer/python/workspace_analytics.py prune
112
+ # → pruned 47 event(s)
113
+ ```
114
+
115
+ `prune` drops anything older than 90 days. The lock file prevents two
116
+ concurrent passes from racing each other.
117
+
118
+ ## What this guide does not cover
119
+
120
+ - **Remote telemetry** — that's the Worker SDK (`packages/telemetry/`).
121
+ Deployment is out of v0 scope; kill-switch defaults to disabled.
122
+ - **Workspace UI** — Phase 4 builds the browser tab that emits these
123
+ events. See [`docs/contracts/daily-workspace.md`](../contracts/daily-workspace.md).
124
+ - **Encryption at rest** — Phase 8. Until then, the JSONL is plaintext
125
+ on your local disk.