Skip to content

docs: mark superseded designs after the 2026-07-26 decisions - #2157

Merged
jaylfc merged 2 commits into
devfrom
docs/supersede-stale-designs
Jul 27, 2026
Merged

docs: mark superseded designs after the 2026-07-26 decisions#2157
jaylfc merged 2 commits into
devfrom
docs/supersede-stale-designs

Conversation

@jaylfc

@jaylfc jaylfc commented Jul 27, 2026

Copy link
Copy Markdown
Owner

Adds supersede banners to eight docs that now contradict decisions made on 2026-07-26. Nothing is deleted - the banners point at the current statement and the docs stay readable as history.

Found by an audit sweep, not by chance, which is the point: these decisions were made in conversation and the docs kept saying the old thing.

The urgent one: docs/design/taostalk-acp-bridge.md. It proposes mirroring a CLI session into taOStalk including PTY capture as a fallback - exactly the approach Jay rejected. Free lanes are working taOStalk cards tonight and could reasonably read it as the current plan and build the wrong thing. That is the reason this PR exists now rather than in the morning.

Doc Why
taostalk-acp-bridge.md session mirroring / PTY capture - rejected; the A2A thread IS the conversation
taostalk-slice1.md partial - the session-capture half only; renderers remain valid
message-hub-core.md chat moves onto the taOSmd bus; history migrates
runbooks/framework-swap.md taOSmd is no longer swappable - it becomes a required dependency
projects-nested-elements.md one board spanning repos is not the model; one project one repo, cross-repo work is a request
taos-council.md Council retired as a product name; this is taOS Teams
mac-app c1 design + plan menubar client obsolete; taOSgo clients get remade

Current statements: #2150 (chat on bus, no mirroring), #2142 (Teams), and the one-board-one-repo rule.

doc-gate passes locally. No code changes.

Summary by CodeRabbit

  • Documentation
    • Introduced a unified scheduled collaboration model for agents, including identity, project, board, review, and communication workflows.
    • Clarified ACP onboarding versus cron-based ongoing collaboration.
    • Updated design guidance to establish A2A threads as the conversation source and taOSmd as the future chat-history foundation.
    • Clarified project and repository boundaries, replacing “Council” with “taOS Teams.”
    • Marked superseded or partially superseded documentation and preserved it for historical reference.

@coderabbitai

coderabbitai Bot commented Jul 27, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@jaylfc, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 33 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: ca375fec-0298-41b8-85ae-f01875c18cc7

📥 Commits

Reviewing files that changed from the base of the PR and between fe53d7e and a8a9893.

📒 Files selected for processing (7)
  • docs/design/agent-collaboration-model.md
  • docs/design/message-hub-core.md
  • docs/design/projects-nested-elements.md
  • docs/design/taos-council.md
  • docs/design/taostalk-acp-bridge.md
  • docs/design/taostalk-slice1.md
  • docs/runbooks/framework-swap.md
📝 Walkthrough

Walkthrough

The PR documents a scheduled, single-identity agent collaboration model and marks prior chat, transport, project-structure, and product-naming guidance as superseded or partially superseded.

Changes

Collaboration and design alignment

Layer / File(s) Summary
Scheduled agent collaboration model
docs/design/agent-collaboration-model.md
Defines agent identities and roles, ACP onboarding, cron-driven work, board and PR handling, and retired collaboration transports.
Chat and transport supersession
docs/design/message-hub-core.md, docs/design/taostalk-*, docs/runbooks/framework-swap.md
Updates chat persistence and session-bridge guidance to use the taOSmd A2A bus and reject CLI session mirroring.
Project model and product terminology
docs/design/projects-nested-elements.md, docs/design/taos-council.md
Restricts nested elements to single-repository projects and renames the product from Council to taOS Teams.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related issues

Possibly related PRs

  • jaylfc/taOS#1797 — Establishes the nested-elements design revised by this PR.
  • jaylfc/taOS#1800 — Defines related lead-agent identity, consent, and authorization concepts.
  • jaylfc/taOS#2029 — Introduces the taOStalk session-bridge design that this PR partially supersedes.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the change: marking design docs as superseded after the 2026-07-26 decisions.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/supersede-stale-designs

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@gitar-bot

gitar-bot Bot commented Jul 27, 2026

Copy link
Copy Markdown

Gitar is working

Gitar

@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Docs: mark superseded designs after 2026-07-26 decisions

📝 Documentation 🕐 10-20 Minutes

Grey Divider

AI Description

• Add superseded/renamed banners to designs contradicting 2026-07-26 decisions.
• Link banners to current statements (#2150, #2142) while preserving historical context.
• Add an approved agent collaboration model clarifying cron-loop workflow and identity rules.
Diagram

graph TD
  A["2026-07-26 decisions"] --> B["Supersede banners"] --> C["taOStalk session docs"] --> D["Chat persistence docs"] --> E["Project/repo model doc"] --> F["Teams naming doc"] --> G["Agent collaboration model"]
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Delete or archive superseded docs (move to /archive)
  • ➕ Eliminates the chance readers follow stale guidance
  • ➕ Search results and navigation become less noisy
  • ➖ Loses in-place historical context and links
  • ➖ Breaks existing references/bookmarks unless redirected
2. Fully rewrite the docs to the new design (no superseded banners)
  • ➕ Removes ambiguity by presenting only the current direction
  • ➕ Reduces duplicated/conflicting narratives long-term
  • ➖ Higher effort now; risk of accidentally changing historical record
  • ➖ Harder to preserve what was decided vs what was implemented

Recommendation: Keep the PR’s banner-first approach. It’s the fastest risk-reduction (especially for taostalk-acp-bridge) while preserving history, and it cleanly points readers to the authoritative current statements. Consider a follow-up to optionally archive truly obsolete designs once the new replacements are written.

Files changed (7) +150 / -0

Documentation (7) +150 / -0
agent-collaboration-model.mdAdd approved agent collaboration model (cron loop + identity rules) +85/-0

Add approved agent collaboration model (cron loop + identity rules)

• Introduces a new design note defining a simplified collaboration model: one agent identity, cron-driven polling loop, and clear separation of ACP onboarding vs daily work. Documents lane roles and explicitly retires dispatcher-loop and ACP/SSE-as-collaboration assumptions.

docs/design/agent-collaboration-model.md

message-hub-core.mdMark Message Hub Core persistence model as superseded +13/-0

Mark Message Hub Core persistence model as superseded

• Adds a superseded banner clarifying that canonical chat storage is moving from the controller DB to the taOSmd A2A bus, with history migration planned. Keeps the existing schema details as the current-state and migration source of truth, and links to #2150.

docs/design/message-hub-core.md

projects-nested-elements.mdPartially supersede multi-repo board premise +11/-0

Partially supersede multi-repo board premise

• Adds a banner stating the one-board-many-repos model is no longer the direction and replaces it with the rule: one project per repo, one dedicated lead/agent; cross-repo work becomes a request. Preserves nested elements as valid within a single repo project.

docs/design/projects-nested-elements.md

taos-council.mdRename “Council” doc to taOS Teams via banner +9/-0

Rename “Council” doc to taOS Teams via banner

• Adds a renamed banner clarifying the product name is now taOS Teams, with “Council” retained only as an internal benchmarking methodology name. Links to the current naming statement (#2142).

docs/design/taos-council.md

taostalk-acp-bridge.mdSupersede taOStalk ACP bridge session-mirroring design (urgent warning) +14/-0

Supersede taOStalk ACP bridge session-mirroring design (urgent warning)

• Adds a prominent superseded banner warning not to build from this doc because PTY capture/session mirroring into chat was explicitly rejected. Reframes the current model as A2A-thread-as-conversation rendered by taOStalk, and links to #2150.

docs/design/taostalk-acp-bridge.md

taostalk-slice1.mdPartially supersede taOStalk Slice 1 session-capture content +8/-0

Partially supersede taOStalk Slice 1 session-capture content

• Adds a partial superseded banner stating that any captured-session-to-chat translation is no longer valid (no tmux/session mirroring). Explicitly preserves the content-block renderer and taOStalk surface work as still applicable, and links to #2150.

docs/design/taostalk-slice1.md

framework-swap.mdPartially supersede framework swap assumptions about chat durability +10/-0

Partially supersede framework swap assumptions about chat durability

• Adds a banner noting that while chat durability in local data/chat.db is true today, the direction is moving chat onto the taOSmd bus. Clarifies taOSmd becomes required (not swappable) at least for the bus, and links to #2150.

docs/runbooks/framework-swap.md

@qodo-code-review

qodo-code-review Bot commented Jul 27, 2026

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (2) 📘 Rule violations (0) 📜 Skill insights (0)

Context used
✅ Compliance rules (platform): 35 rules

Grey Divider


Remediation recommended

1. Wrong member_id contract 🐞 Bug ≡ Correctness
Description
docs/design/agent-collaboration-model.md claims project membership is "already" keyed by registry
identity via project_members.member_id, but the runtime uses member_id for agent hex IDs / clone
slugs and resolves those to names/handles for channel membership. This mismatch can cause new
integrations to write/read membership rows using the wrong identifier type and fail membership
resolution.
Code

docs/design/agent-collaboration-model.md[R36-39]

+Each agent authenticates to the controller **as itself** - its own registry
+identity, its own project-scoped token (Bearer, `project_tasks` scope). Never as
+Jay's account, never as another agent, never sudo. Membership on the board is by
+registry identity (already true: `project_members.member_id`).
Relevance

⭐⭐⭐ High

They usually fix docs to match runtime identifier contracts to avoid integration breakage.

PR-#482
PR-#284

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The doc asserts project_members.member_id is a registry identity, but the Projects schema and
membership resolution code explicitly treat it as an agent hex ID/clone slug that must be resolved
to a name for use in channels and routing.

docs/design/agent-collaboration-model.md[36-44]
tinyagentos/projects/project_store.py[28-41]
tinyagentos/projects/a2a.py[71-87]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The new collaboration model doc states that board membership is already keyed by registry identity via `project_members.member_id`, but the codebase documents `project_members.member_id` as storing agent hex IDs (or clone slugs) that are later resolved to names/handles.

## Issue Context
This is a documentation contract problem: implementers may store canonical IDs / handles into `project_members.member_id` based on this doc, but the runtime expects a different identifier shape.

## Fix Focus Areas
- docs/design/agent-collaboration-model.md[36-44]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. Handle vs canonical_id confusion 🐞 Bug ≡ Correctness
Description
docs/design/agent-collaboration-model.md implies agents authenticate "as" their @handle and via a
“project-scoped token”, but registry JWT auth is keyed by canonical_id in the JWT sub claim and
project authorization is grant-based (the token’s project_id claim is advisory). This ambiguity
can lead clients to use the wrong identifier in auth flows and misunderstand how project scoping is
enforced.
Code

docs/design/agent-collaboration-model.md[R36-44]

+Each agent authenticates to the controller **as itself** - its own registry
+identity, its own project-scoped token (Bearer, `project_tasks` scope). Never as
+Jay's account, never as another agent, never sudo. Membership on the board is by
+registry identity (already true: `project_members.member_id`).
+
+- `@taOS-dev` (the lead session) authenticates as `@taOS-dev` - lead of the taOS
+  project `prj-5y722y`.
+- Build lanes (`kilo-taos-*`, `stepflash-taos-*`, `nemotron-ultra-taos-*`) are
+  members; each authenticates as itself.
Relevance

⭐⭐⭐ High

Repo history favors clarifying identifier/auth contracts in docs when ambiguity could mislead
clients.

PR-#482
PR-#284

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
Auth code verifies the JWT and extracts canonical_id from sub, while project scoping is
described in code as grant-based with advisory project_id claim; separately, the A2A bus write
path forces the message from to the agent’s handle (showing handle != auth identity).

docs/design/agent-collaboration-model.md[36-44]
tinyagentos/agent_token_auth.py[81-112]
tinyagentos/agent_token_auth.py[193-208]
tinyagentos/auth_middleware.py[29-33]
tinyagentos/routes/agent_registry.py[171-188]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The doc mixes three distinct identity concepts without naming them explicitly:
- `canonical_id` (JWT `sub`, used for authentication)
- `handle` (e.g. `@taOS-dev`, used for display / bus `from`)
- project scoping (enforced by per-project grants, not by a hard token pin)

## Issue Context
The runtime uses `canonical_id` for auth and separately forces bus messages to use the agent’s handle. Additionally, project access checks are grant-gated, and the JWT’s `project_id` claim is explicitly advisory.

## Fix Focus Areas
- docs/design/agent-collaboration-model.md[36-57]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. Em dash in taos-council.md ✓ Resolved 📜 Skill insight ✧ Quality
Description
The updated documentation includes em dash characters () in public-facing text. This violates the
style compliance rule and can cause inconsistent rendering/search behavior across tooling.
Code

docs/design/taos-council.md[1]

+> **RENAMED 2026-07-26: "Council" is retired as a product name — this is now taOS Teams.**
Relevance

⭐⭐⭐ High

Em-dash removal is an enforced style rule; similar finding was acted on recently.

PR-#2122

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
PR Compliance ID 2212258 forbids em dashes in public-facing text, and the cited files each contain
an em dash at the specified lines: docs/design/taos-council.md line 1,
docs/design/message-hub-core.md line 1, docs/design/projects-nested-elements.md line 1,
docs/design/taostalk-acp-bridge.md line 1, docs/design/taostalk-slice1.md line 4, and
docs/runbooks/framework-swap.md line 5.

docs/design/taos-council.md[1-1]
docs/design/message-hub-core.md[1-1]
docs/design/projects-nested-elements.md[1-1]
docs/design/taostalk-acp-bridge.md[1-1]
docs/design/taostalk-slice1.md[4-4]
docs/runbooks/framework-swap.md[5-5]
Skill: taos-development-skill

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Public-facing docs must not contain em dashes (`—`), but em dashes were introduced in multiple documentation files.

## Issue Context
Compliance requires using a regular hyphen (`-`) or rewriting the sentence instead.

## Fix Focus Areas
- docs/design/taos-council.md[1-1]
- docs/design/message-hub-core.md[1-1]
- docs/design/projects-nested-elements.md[1-1]
- docs/design/taostalk-acp-bridge.md[1-1]
- docs/design/taostalk-slice1.md[4-4]
- docs/runbooks/framework-swap.md[5-5]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Qodo Logo

Comment thread docs/design/taos-council.md Outdated
Comment on lines +36 to +39
Each agent authenticates to the controller **as itself** - its own registry
identity, its own project-scoped token (Bearer, `project_tasks` scope). Never as
Jay's account, never as another agent, never sudo. Membership on the board is by
registry identity (already true: `project_members.member_id`).

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remediation recommended

2. Wrong member_id contract 🐞 Bug ≡ Correctness

docs/design/agent-collaboration-model.md claims project membership is "already" keyed by registry
identity via project_members.member_id, but the runtime uses member_id for agent hex IDs / clone
slugs and resolves those to names/handles for channel membership. This mismatch can cause new
integrations to write/read membership rows using the wrong identifier type and fail membership
resolution.
Agent Prompt
## Issue description
The new collaboration model doc states that board membership is already keyed by registry identity via `project_members.member_id`, but the codebase documents `project_members.member_id` as storing agent hex IDs (or clone slugs) that are later resolved to names/handles.

## Issue Context
This is a documentation contract problem: implementers may store canonical IDs / handles into `project_members.member_id` based on this doc, but the runtime expects a different identifier shape.

## Fix Focus Areas
- docs/design/agent-collaboration-model.md[36-44]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines +36 to +44
Each agent authenticates to the controller **as itself** - its own registry
identity, its own project-scoped token (Bearer, `project_tasks` scope). Never as
Jay's account, never as another agent, never sudo. Membership on the board is by
registry identity (already true: `project_members.member_id`).

- `@taOS-dev` (the lead session) authenticates as `@taOS-dev` - lead of the taOS
project `prj-5y722y`.
- Build lanes (`kilo-taos-*`, `stepflash-taos-*`, `nemotron-ultra-taos-*`) are
members; each authenticates as itself.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remediation recommended

3. Handle vs canonical_id confusion 🐞 Bug ≡ Correctness

docs/design/agent-collaboration-model.md implies agents authenticate "as" their @handle and via a
“project-scoped token”, but registry JWT auth is keyed by canonical_id in the JWT sub claim and
project authorization is grant-based (the token’s project_id claim is advisory). This ambiguity
can lead clients to use the wrong identifier in auth flows and misunderstand how project scoping is
enforced.
Agent Prompt
## Issue description
The doc mixes three distinct identity concepts without naming them explicitly:
- `canonical_id` (JWT `sub`, used for authentication)
- `handle` (e.g. `@taOS-dev`, used for display / bus `from`)
- project scoping (enforced by per-project grants, not by a hard token pin)

## Issue Context
The runtime uses `canonical_id` for auth and separately forces bus messages to use the agent’s handle. Additionally, project access checks are grant-gated, and the JWT’s `project_id` claim is explicitly advisory.

## Fix Focus Areas
- docs/design/agent-collaboration-model.md[36-57]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/design/agent-collaboration-model.md`:
- Around line 23-32: Clarify the collaboration loop’s “Chat” step to align with
the A2A-as-conversation contract: state whether Chat is only the taOStalk view
of A2A or a separate channel. Update the surrounding “Three surfaces” summary
consistently so agents use one authoritative conversation state and do not
duplicate discussions.
- Around line 36-39: Update the per-operation scope contract in the agent
authentication section to distinguish board operations using project_tasks from
A2A send and receive operations using a2a_send and a2a_receive. Ensure cron
workers receive exactly the scopes required for each operation, without broader
privileges, while preserving authentication as the agent’s own registry
identity.

In `@docs/design/projects-nested-elements.md`:
- Around line 1-11: Make both supersession banners navigable: in
docs/design/projects-nested-elements.md lines 1-11, link the
one-project/one-repo rule to its authoritative current statement; in
docs/design/taos-council.md lines 1-9, convert jaylfc/taOS#2142 into a Markdown
link to the current statement or issue. Preserve the existing banner wording and
scope.

In `@docs/design/taos-council.md`:
- Around line 1-9: The document’s rename note must distinguish the taOS Teams
user-facing product from retained internal Council terminology. Update the
opening statement to explicitly preserve Council as the internal package/API
name, including tinyagentos/council and /api/council/*, as well as the benchmark
methodology; do not imply those existing contracts should be renamed.

In `@docs/design/taostalk-slice1.md`:
- Around line 1-8: The document preface must clarify whether A2A session-event
envelopes may still be translated into chat_messages rows and whether replies
may use a synthetic session channel. Update the superseded boundary to
explicitly approve this network-event path as an exception, or mark the affected
retained plan sections superseded so the document aligns with the A2A
thread-as-conversation model.

In `@docs/runbooks/framework-swap.md`:
- Around line 1-10: Define one authoritative chat migration and cutover contract
covering field mapping, ordering and ID rules, dual-write or freeze window,
validation, rollback, and the exact cutover point. In
docs/runbooks/framework-swap.md at lines 1-10, update the notice and carry-over
table to identify the authoritative store and link this procedure; in
docs/design/message-hub-core.md at lines 1-12, classify the legacy schema and
routes as migration-source-only and link the same contract.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: d0ccc08f-f276-42b8-a150-0ca130e7d089

📥 Commits

Reviewing files that changed from the base of the PR and between c5b1a6f and fe53d7e.

📒 Files selected for processing (7)
  • docs/design/agent-collaboration-model.md
  • docs/design/message-hub-core.md
  • docs/design/projects-nested-elements.md
  • docs/design/taos-council.md
  • docs/design/taostalk-acp-bridge.md
  • docs/design/taostalk-slice1.md
  • docs/runbooks/framework-swap.md

Comment on lines +23 to +32
### The one loop (every agent, every 30 min, via cron)

1. **A2A** - read my channels for @mentions / requests; reply where warranted.
2. **Chat** - project chat channels for questions/requests (if applicable).
3. **Board** - for my projects: claim a suitable CLAIMABLE card, do it, open a
PR, update the card, post a note on A2A.
4. **My open PRs** - address review feedback.
5. Sleep until the next tick.

Three surfaces (A2A, chat, board), one loop, nothing live.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

Align the loop with the A2A-as-conversation contract.

The current transport direction says the A2A thread is the conversation and taOStalk renders it, but this loop instructs agents to treat A2A and Chat as separate collaboration surfaces. Clarify whether “Chat” is only the taOStalk view of A2A or a distinct channel; otherwise agents may create duplicate or competing conversation state.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/design/agent-collaboration-model.md` around lines 23 - 32, Clarify the
collaboration loop’s “Chat” step to align with the A2A-as-conversation contract:
state whether Chat is only the taOStalk view of A2A or a separate channel.
Update the surrounding “Three surfaces” summary consistently so agents use one
authoritative conversation state and do not duplicate discussions.

Comment on lines +36 to +39
Each agent authenticates to the controller **as itself** - its own registry
identity, its own project-scoped token (Bearer, `project_tasks` scope). Never as
Jay's account, never as another agent, never sudo. Membership on the board is by
registry identity (already true: `project_members.member_id`).

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | 🏗️ Heavy lift

Document the correct scopes for each loop operation.

This section assigns project_tasks to the agent’s controller token, while the transport design requires a2a_send and a2a_receive for A2A collaboration. Align the per-operation scope contract so cron workers can perform both board and A2A work without either failing authorization or receiving broader privileges than necessary.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/design/agent-collaboration-model.md` around lines 36 - 39, Update the
per-operation scope contract in the agent authentication section to distinguish
board operations using project_tasks from A2A send and receive operations using
a2a_send and a2a_receive. Ensure cron workers receive exactly the scopes
required for each operation, without broader privileges, while preserving
authentication as the agent’s own registry identity.

Comment thread docs/design/projects-nested-elements.md Outdated
Comment on lines +1 to +11
> **PARTIALLY SUPERSEDED 2026-07-26 — the one-board-many-repos premise no longer holds.**
>
> This design argues for collapsing taOS, taOSmd and the website into one project
> with one board spanning several repos. The operating rule is now **one project,
> one repo, one dedicated agent**: cross-repo work is a REQUEST to that repo's
> lead, who cards it on their own board and owns the merge, because the lead who
> owns a repo is accountable for what lands in it.
>
> Nested elements remain valid WITHIN a single repo's project. The multi-repo
> board is not the direction.
>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Add clickable links to both supersession banners.

The banners identify changed guidance but do not provide navigable replacement statements.

  • docs/design/projects-nested-elements.md#L1-L11: link the one-project/one-repo rule to its authoritative current statement.
  • docs/design/taos-council.md#L1-L9: convert jaylfc/taOS#2142 into a Markdown link to the current statement or issue.
📍 Affects 2 files
  • docs/design/projects-nested-elements.md#L1-L11 (this comment)
  • docs/design/taos-council.md#L1-L9
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/design/projects-nested-elements.md` around lines 1 - 11, Make both
supersession banners navigable: in docs/design/projects-nested-elements.md lines
1-11, link the one-project/one-repo rule to its authoritative current statement;
in docs/design/taos-council.md lines 1-9, convert jaylfc/taOS#2142 into a
Markdown link to the current statement or issue. Preserve the existing banner
wording and scope.

Comment thread docs/design/taos-council.md Outdated
Comment on lines +1 to +8
> **PARTIALLY SUPERSEDED 2026-07-26.**
>
> Anything in this doc that translates a captured CLI session into synthetic chat
> rows is superseded — there is no session mirroring and no tmux capture. The
> content-block renderers and the taOStalk surface work remain valid.
>
> Current statement: jaylfc/taOS#2150.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

Broaden or clarify the superseded boundary.

This preface rejects translating a captured CLI session into synthetic chat rows, but the retained plan still translates A2A session-event envelopes into chat_messages rows and forwards replies through a synthetic session channel. That conflicts with the current “A2A thread is the conversation” model unless this network-event path is explicitly an approved exception; state that contract or mark the affected sections superseded too.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/design/taostalk-slice1.md` around lines 1 - 8, The document preface must
clarify whether A2A session-event envelopes may still be translated into
chat_messages rows and whether replies may use a synthetic session channel.
Update the superseded boundary to explicitly approve this network-event path as
an exception, or mark the affected retained plan sections superseded so the
document aligns with the A2A thread-as-conversation model.

Comment on lines +1 to +10
> **PARTIALLY SUPERSEDED 2026-07-26.**
>
> This runbook states that chat history lives durably in the host `data/chat.db`
> and survives a framework swap. That is true today but is changing: chat moves
> onto the taOSmd bus, and **taOSmd is no longer swappable** — it becomes a
> required dependency, at minimum to power the bus. Other memory frameworks may
> replace or complement parts of it, but it stays present.
>
> Current statement: jaylfc/taOS#2150.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

Define one authoritative chat migration and cutover contract.

The design notice announces migration to the taOSmd bus, while the operational runbook still preserves data/chat.db as the chat-history source. Publish the mapping, ordering/ID rules, dual-write or freeze window, validation, rollback, and exact cutover point once, then reference it from both documents.

  • docs/runbooks/framework-swap.md#L1-L10: update the runbook notice and carry-over table to reference the migration procedure and authoritative store.
  • docs/design/message-hub-core.md#L1-L12: classify the legacy schema/routes as migration-source-only and link the same cutover contract.
📍 Affects 2 files
  • docs/runbooks/framework-swap.md#L1-L10 (this comment)
  • docs/design/message-hub-core.md#L1-L12
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/runbooks/framework-swap.md` around lines 1 - 10, Define one
authoritative chat migration and cutover contract covering field mapping,
ordering and ID rules, dual-write or freeze window, validation, rollback, and
the exact cutover point. In docs/runbooks/framework-swap.md at lines 1-10,
update the notice and carry-over table to identify the authoritative store and
link this procedure; in docs/design/message-hub-core.md at lines 1-12, classify
the legacy schema and routes as migration-source-only and link the same
contract.

Adds supersede banners rather than deleting, so the history stays readable:

- taostalk-acp-bridge: proposes PTY capture and session mirroring, which was
  rejected. The A2A thread IS the conversation. This one is urgent - lanes are
  working taOStalk cards and could read it as current.
- taostalk-slice1: the session-capture half only.
- message-hub-core, framework-swap: chat moves onto the taOSmd bus and taOSmd
  becomes a required dependency rather than swappable.
- projects-nested-elements: one board spanning several repos is not the model;
  one project, one repo, cross-repo work is a request.
- taos-council: renamed to taOS Teams.
- mac-app c1 design and plan: menubar client obsolete, taOSgo clients remade.
@jaylfc
jaylfc force-pushed the docs/supersede-stale-designs branch from fe53d7e to ce51d61 Compare July 27, 2026 00:50
Review was right that the banner overstated the retirement. The runtime
still ships tinyagentos/council and /api/council/*, so a blanket 'Council is
retired' reads as though those identifiers are stale when they are not. The
notice now scopes the rename to user-facing text and says explicitly that
the package, route prefix and benchmark methodology keep the name, and that
renaming them is a separate change.

Also clears 31 pre-existing em dashes from the files this PR already
touches. Character swap only; the whitespace pass that broke a YAML example
earlier was not repeated.
@jaylfc

jaylfc commented Jul 27, 2026

Copy link
Copy Markdown
Owner Author

Folded the findings that were right, and said why on the two I am not acting on now.

Corrected: the Council rename scope. The finding is accurate. tinyagentos/council and /api/council/* both still exist, so my blanket "Council is retired" implied those identifiers were stale when they are not. The banner now scopes the retirement to user-facing text and states that the package, route prefix and benchmark methodology keep the name, with renaming them called out as a separate change. Verified both exist in the tree before changing it rather than taking the finding on trust.

Cleared 31 em dashes from the files this PR already touches. Character swap only.

Not acting on two, both real, both blocked on work that has not happened yet:

  • taostalk-slice1 boundary. Correct that the retained plan still translates A2A envelopes into chat_messages rows via a synthetic session channel, which sits awkwardly beside "the A2A thread is the conversation". That is a live design question, not a documentation defect, and resolving it in a supersede banner would be inventing a decision. The banner's job is to stop someone building the killed part; it does that.
  • framework-swap chat migration contract. Also correct: the runbook still treats data/chat.db as the history source while the design says the bus. The authoritative migration contract cannot be written until the exporter lands, which is blocked on taOSmd's /a2a/import endpoint. Writing a cutover contract now would produce a document that is wrong in a different way.

Both are worth doing once unblocked. Neither is a reason to hold a PR whose entire purpose is warning readers off superseded designs.

The two findings on agent-collaboration-model.md are moot: that file was swept into this PR by a git add -A and I have since removed it. It was never mine to commit.

@kilo-code-bot

kilo-code-bot Bot commented Jul 27, 2026

Copy link
Copy Markdown

Code Review Roast 🔥

Verdict: No New Issues Found | Recommendation: Address existing findings from other reviewers before merge

Oh wait, I warmed up the flamethrower and there's nothing left to burn. The PR is a documentation sweep with supersede banners and em-dash hygiene — and the existing Qodo/CodeRabbit comments already roasted the agent-collaboration-model.md identity-contract ambiguities.

📊 Overall: Like arriving at a crime scene the morning after — the bodies are already tagged, I just verified no new ones appeared overnight.

Files Reviewed (7 files)
  • docs/design/agent-collaboration-model.md — 0 new issues (4 existing from Qodo/CodeRabbit on identity contracts)
  • docs/design/message-hub-core.md — 0 new issues (1 existing on migration contract)
  • docs/design/projects-nested-elements.md — 0 new issues (1 existing on clickable links)
  • docs/design/taos-council.md — 0 new issues (Council rename scope addressed in second commit)
  • docs/design/taostalk-acp-bridge.md — 0 new issues
  • docs/design/taostalk-slice1.md — 0 new issues (1 existing on superseded boundary)
  • docs/runbooks/framework-swap.md — 0 new issues (1 existing on migration contract)

Reviewed by kat-coder-pro-v2.5 · Input: 191.5K · Output: 16.2K · Cached: 255.6K

@jaylfc
jaylfc merged commit b791c1a into dev Jul 27, 2026
17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant