Skip to content

docs: add badges and ecosystem links#3

Merged
chazmaniandinkle merged 2 commits intomainfrom
docs/presentation-polish
Apr 13, 2026
Merged

docs: add badges and ecosystem links#3
chazmaniandinkle merged 2 commits intomainfrom
docs/presentation-polish

Conversation

@chazmaniandinkle
Copy link
Copy Markdown
Contributor

Summary

  • Add CI, license, and Go Report Card badges to README header
  • Add openclaw-plugin to the ecosystem table
  • Naming already consistent (CogOS in prose, cogos for binary/repo)

Test plan

  • Verify badge images render on GitHub
  • Verify CI badge links to correct workflow
  • Verify openclaw-plugin link resolves

🤖 Generated with Claude Code

chazmaniandinkle and others added 2 commits April 13, 2026 18:04
- Add CI/license/Go Report Card badges to README header
- Standardize naming: CogOS (prose), cogos (binary/repo)
- Add openclaw-plugin to ecosystem table

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Tests that load agent CRDs from /Users/slowbro/cog-workspace now check
for the definitions directory and skip when unavailable. Also relaxes
golangci-lint: disables errcheck and unused (both need dedicated cleanup
passes), suppresses staticcheck style suggestions (QF/S1/ST1005) and
ineffassign.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@chazmaniandinkle chazmaniandinkle merged commit 3e6dc68 into main Apr 13, 2026
10 checks passed
chazmaniandinkle referenced this pull request in chazmaniandinkle/cogos Apr 14, 2026
Add ResolveToFieldKey and FieldKeyToURI — the two directions of the
holographic pointer. Any URI form (cog://, cog:, memory-relative,
absolute path) normalizes to the field's canonical key. The inverse
projects field keys back to portable cog:// URIs.

Fixes Codex review finding #2: attention.boost now resolves URIs
before calling Field().Boost(), so boosts via MCP actually match
field entries. query_field returns proper cog:// URIs instead of
raw filesystem paths.

Fixes review finding #3: node probes now run concurrently with
goroutines. Total wall time is ~2s regardless of service count
instead of 2s × N services blocking the heartbeat loop.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
chazmaniandinkle added a commit that referenced this pull request Apr 20, 2026
Issue 1 — Session routing collapses on multi-message cycles:
  Previously the cycle stamped every reply with firstUserMessageSessionID,
  so when drainPendingUserMessages returned messages from multiple tabs,
  only the first session saw the response. Added uniqueUserMessageSessionIDs
  + WithSessionIDs context helper; both the respond tool and ensureUserTurnReply
  now fan out one reply per unique session_id in the queue. respondInvokeCount
  still bumps once per tool invocation so auto-fallback dedup stays correct.

Issue 2 — Legacy PID files cleared on upgrade:
  LocalStatusWithCRD now re-derives the expected argv from the current CRD
  when the PID file has no recorded Cmd and adopts the live process if it
  matches — preventing duplicate-spawn on in-place kernel upgrades. Strict
  refusal preserved when the CRD is missing or argv doesn't match.
  ListLocalProcessesWithCRDs + FetchLive CRD-map plumbing drives adoption
  during reconcile.
chazmaniandinkle added a commit that referenced this pull request Apr 20, 2026
fix: PR #7 review — PID ownership + reply guarantee + venv hash + session_id
@chazmaniandinkle chazmaniandinkle deleted the docs/presentation-polish branch April 20, 2026 01:06
chazmaniandinkle pushed a commit that referenced this pull request Apr 22, 2026
… gap

Closes Agent F gap #3 (session management, CRITICAL) — the last of the
eight critical MCP surface gaps. Implements the hybrid design in
cog://mem/semantic/surveys/2026-04-21-consolidation/
agent-P-session-management-evaluation with a few user-approved amendments
(see below).

Kernel changes
--------------
- internal/engine/sessions.go: typed SessionState, SessionRegistry,
  HandoffState, HandoffRegistry with RWMutex / Mutex guards; session-id
  format validation; idempotent-register "update semantics"; atomic
  first-wins claim with TTL enforcement; replay-from-bus at startup so
  the in-memory view rebuilds from bus_sessions + bus_handoffs.
- internal/engine/serve_sessions_mgmt.go: 8 HTTP handlers —
    POST /v1/sessions/register
    POST /v1/sessions/{id}/heartbeat
    POST /v1/sessions/{id}/end
    GET  /v1/sessions/presence
    POST /v1/handoffs/offer
    GET  /v1/handoffs
    POST /v1/handoffs/{id}/claim
    POST /v1/handoffs/{id}/complete
  The existing /v1/sessions and /v1/sessions/{id}[/context] routes (TAA
  inference context, regression-locked) are preserved untouched; the new
  specific patterns coexist thanks to Go 1.22 method-aware routing.
- internal/engine/mcp_sessions.go: 8 cog_* MCP tools over the same
  registries so a future native client (Wave widget, desktop app, cog
  CLI) can use handoff without the Python bridge (amendment #5 — two
  MCP surfaces coexist by design).
- internal/engine/sessions_test.go: 15 unit + integration tests
  (validation, lifecycle 404/409, active-window presence, task-field
  validation, 8-way concurrent claim atomicity, TTL expiry, phantom
  offer, complete-without-claim, replay rebuilds state, claim_rejected
  observability, end-to-end MCP round-trip).

Amendments applied vs the survey
--------------------------------
1. No parallel coexistence. All four consumers are in-tree (this PR,
   the bridge on a local branch, the skill doc, and cmd_bus.go);
   migrated atomically. The survey's Open Question #1 was skipped.
2. Idempotent register = update-semantics (survey's Open Question #2
   recommendation). Re-register during the active window updates the
   in-memory row; re-register after end is allowed if the prior row is
   ended or its heartbeat is outside the active window.
3. `handoff.claim_rejected` event emitted on every rejected claim, with
   reason ∈ {already_claimed, ttl_expired, offer_not_found,
   out_of_order}, attempting_session, and conflicting_session when
   relevant. Cheap; big audit value (amendment #4).
4. Two MCP surfaces coexist by design — 8 cogos_* bridge tools over the
   Python sandbox + 8 cog_* kernel-native tools via /mcp. Both hit the
   same kernel registries (amendment #5).

Bridge migration
----------------
A paired local branch on cog-sandbox-mcp (`feat/sessions-kernel-native-
bridge`, NOT pushed) refactors the 8 cogos_* tools to shim over the new
kernel routes, removes client-side aggregation, and rewrites
tests/test_session_handoff.py for the new wire shape. Bridge MCP
signatures and the never-raise {"success": False, "error": ..., "bus_id"}
envelope are preserved — no breaking change for agents using the bridge.

Testing
-------
- `go build ./...`, `go vet ./...`: silent.
- `go test ./internal/engine/... -short -race -count=1`: green
  (pre-existing + new suite passes under race detector).
- End-to-end smoke on port 6932 with a test workspace: register →
  heartbeat → offer → list → claim → second claim (→ 409 +
  claim_rejected event) → complete. bus_sessions chain: 3 events.
  bus_handoffs chain: 4 events (offer, claim, claim_rejected,
  complete). Bridge tools replayed the same flow against the live
  kernel with back-compat response shapes intact.
- The running kernel at :6931 was NOT touched during this work.

Survey reference: cog://mem/semantic/surveys/2026-04-21-consolidation/
agent-P-session-management-evaluation
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