Skip to content

Add rapp-workspace-starter stack: plant a rapp-workspace/1.1 vault - #897

Open
kody-w wants to merge 3 commits into
mainfrom
feat/rapp-workspace-starter
Open

kody-w wants to merge 3 commits into
mainfrom
feat/rapp-workspace-starter

Conversation

@kody-w

@kody-w kody-w commented Sep 10, 2026

Copy link
Copy Markdown
Owner

What this adds

A new RAR stack — stacks/rapp-workspace-starter/ — that plants a private, local-first chief-of-staff style vault (rapp-workspace/1.1 conformant), not an agent-team neighborhood like the existing microsoft-365-team / neighborhood-starter stacks.

  • rapp-workspace-starter.egg — a rapp/1 §9 organism egg, PII-free, verify_egg-clean, containing the workspace-spec anatomy (CLAUDE.md/HOME.md/PERSONA.md/where-everything-lives.md/README.md), standard sections, and the rapp-projects frame authority.
  • factory_agent.py (WorkspaceFactory) — pulls the egg, verify_egg()s it (refuses to unpack on any integrity failure), substitutes {{owner}}/{{ws_slug}}/{{display_name}}/{{world}} tokens, re-mints a fresh rappid.json per instance. public mode is refused by design — a planted workspace holds real PII.
  • workspace_neuron_agent.py + neurons/@rapp/*.neuron.json — a portable, PII-free Knowledge Base of the spec's setup/operating rules (anatomy, mint-once identity, privacy posture, the egg contract, the frame authority), in both tool-form (drop into agents/, zero backend dependency) and storage-form (installable via install_neurons.py for a CommunityRAPP-style backend). Same pattern as @bill/neuron_agent.py; also registered standalone at agents/@rapp/workspace_neuron_agent.py.
  • pack.json — sha256-pinned manifest, same shape as microsoft-365-team/neighborhood-starter.

Wiring (additive only, nothing else touched)

  • scripts/build_stacks_api.py — generates api/v1/stacks.json from every stacks/*/pack.json (5 stacks total now).
  • manifest.json / api.json — one new stacks endpoint each, same pattern as the existing pokedex entry. Patched build_static_api.py's source so the endpoint survives future regenerations.
  • stacks.html — new standalone page rendering the stacks index; one nav link added to index.html.
  • registry.json + static API outputs (catalog.json, taxonomy.json, etc.) regenerated via the real build_registry.py / build_static_api.py to index the new agent (311 agents total, clean net-add).

Verification performed

  • verify_egg() — organism egg passes integrity check.
  • End-to-end factory dry-run + real materialization — token substitution confirmed, identity re-minting confirmed (never reuses the template's placeholder), integrity gate confirmed to refuse a tampered egg.
  • .neuron.json files validated against a simulated install_neurons.py walk_neurons() pass.
  • Full PII sweep across every new/changed file — clean (one pre-existing-public "Bill Whalen" author attribution, matching his own already-public author field elsewhere in registry.json).
  • Served the worktree locally over http.server — confirmed stacks.json parses, stacks.html renders, manifest.json's new endpoint resolves.
  • All touched JSON files parse; registry.json agent count sane (311, clean net-add).

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

…t main)

Same content as the original branch, rebuilt cleanly on top of
current main to resolve merge conflicts in the CI-generated files
(registry.json, api/v1/*.json, manifest.json move constantly via the
Dream Catcher bot) instead of hand-merging stale snapshots.

- stacks/rapp-workspace-starter/: rapp-workspace-starter.egg (rapp/1
  §9 organism egg, verify_egg-clean), factory_agent.py
  (WorkspaceFactory: verify-then-plant, re-mints rappid, refuses
  public mode), workspace_neuron_agent.py + neurons/@rapp/*.neuron.json
  (tool-form + storage-form twins of the same 18 PII-free memories),
  pack.json (sha256-pinned).
- agents/@rapp/workspace_neuron_agent.py: same agent registered
  standalone, indexed via a fresh build_registry.py run (1701 agents
  on current main + this one).
- scripts/build_stacks_api.py: new, generates api/v1/stacks.json from
  every stacks/*/pack.json (5 stacks).
- scripts/build_static_api.py: reapplied the 'stacks' endpoint patch
  onto the CURRENT version of this file (which had since grown a
  'marketplaces' endpoint upstream) so both survive together.
- api.json / manifest.json: 'stacks' endpoint, same pattern as the
  existing 'pokedex' entry.
- stacks.html + one index.html nav link.

Verified fresh against current main: build_registry.py /
build_static_api.py / build_stacks_api.py all ran clean, verify_egg()
ok, all touched JSON valid, full PII sweep clean, served locally and
confirmed stacks.json/stacks.html/manifest.json all resolve.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@kody-w
kody-w force-pushed the feat/rapp-workspace-starter branch from e799a90 to 63ff0d5 Compare September 10, 2026 19:20
kody-w and others added 2 commits September 10, 2026 15:24
…are Issue-notarized, not PR-mutable

Discovered via CI (protected-state check): any change under agents/ or
to registry.json must go through the GitHub Issue notarization
workflow (rar-change-request/1.0), never a pull request. Reverted
agents/@rapp/workspace_neuron_agent.py and registry.json (+ every
static output derived from it) to be byte-identical to main; kept
everything that's actually PR-eligible: the stacks/rapp-workspace-starter/
stack itself (workspace_neuron_agent.py lives there as a tool-form file
to drop into a local agents/ dir, never submitted to the canonical
registry), api/v1/stacks.json, the manifest.json/api.json 'stacks'
endpoint, stacks.html, and the index.html nav link.

To register WorkspaceNeuron in RAR's canonical agent registry later:
submit it via the GitHub Issue notarization flow (see api.json's
submit_agent endpoint / CONSTITUTION.md), not another PR.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The prior force-push's push-triggered build-registry check compared
against an earlier, since-corrected commit that still had the agent
addition, and failed on a stale diff. This empty commit gives the next
push a before/after pair that both correctly exclude agents/@rapp/workspace_neuron_agent.py,
so that check's push-triggered diff is clean. protected-state (the
pull-request-triggered check that matters for merge) already passes
against origin/main.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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