Repository navigation
Projects after launch: modes and maintenance, environments, adopting finished projects, dropped files; 3D on a Mac - #61
Merged
Conversation
…gine
On a Mac the hub's own machine has not reported its facts, so GET /v1/fleet
sends null for its kind, arch, OS, backend, CPU and sizes. The engine read
those fields as plain strings and numbers, refused the whole fleet ("invalid
type: null, expected a string"), and the Machines view fell back to "3D needs
WebGPU or WebGL2" in a browser that has both; the desktop's 3D had no fleet
either, as it reads the same types.
- apz-engine: every fleet field reads null as its default.
- Web: a feed the engine refuses is logged and skipped (the engine keeps the
last one); a start that fails for another reason than a missing adapter
says that reason instead of blaming the browser.
- Web: a WebGPU that is there but does not start (its device or surface
fails) is retried on WebGL2, on a fresh canvas in the old one's place.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ng, files
- Modes: a project is in build (the default) or maintenance, one table
(projects::MODES). POST /v1/projects/{id}/mode; back in build a delivered
project reopens at implementation. A delivered project in maintenance stays
worked: its members, its budget and the owner's picks as tasks.
- Maintenance (maintenance.rs): a project's signals (the owner's, a public
ingest address whose token is kept as its hash, and agents' digests of the
project's connectors and MCP servers), the map of the product, and the
proposals: what would change, who it touches, risk, value 1-5 and why,
size, evidence and acceptance; instruments when data is missing. Sweeps run
on a schedule, on entering maintenance, or when the owner asks, by the
project's agents in turn, with the focus, the new signals, the map, the
waiting proposals and the declines' reasons. The owner's Do it posts a task
of the project; Later and No (with a reason) are the others. Agents cannot
post tasks to a project in maintenance (law T-024).
- Environments (environments.rs): kinds, tracks (main, releases, by hand),
variables, secrets in the vault (project:<id>.<env>), deploys through a
deploy hook; tracked ones deploy after a landing or a signed release; a
protected one waits for the owner as a `deploy` approval. plaza_deploy for
the delivery roles (law T-025).
- Adopting a project that exists (adopt.rs): from a granted platform
repository, a public git URL, a folder on the hub, or nothing yet; opened
delivered and in maintenance by default, with its environments.
- Files: uploads into Weft by hash and one owner change for many files
(project_files.rs); the owner's attachments on chats, conversations and
steers, readable by the agent the message goes to.
- The vault takes project:<id>.<env> bindings. OpenAPI blessed again.
- Tested end to end on a scratch hub with Weft (tests/maintenance.rs).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…adopting, dropped files Web: - A Mode button on the project page; a Maintenance tab: what waits for the owner, the product map as an animated graph (areas by health, their links, the waiting proposals beside their area), an area or proposal opened beside it, the proposals ranked with Do it, Later and No, the inbox, the ingest address, what the watchers read; Expert for every field and the decisions. - An Environments tab: each environment with what it runs and what was deployed, deploy, edit, secrets and the deploy hook. - The New project dialog brings in a project that exists (a platform's repository, a git address, a folder on the hub, or files), and takes files for a new project; a project's Add files card takes dropped or picked files and folders (ui/file-drop.ts). - The chat composers (IDE chat, conversations, agent page, overview) take dropped, pasted or picked attachments. Desktop: the same tabs and Mode chooser, the adopt form, Add files (picker and window drops), and attachments in the IDE composers. CLI: agentplaza projects mode|modes|adopt|maintenance|env|upload, and chat --attach. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
docs/guide/projects-after-launch.md (modes, maintenance, environments, bringing a project in, files and attachments), the architecture's rows, a README bullet, and api-tests/bruno/projects-life. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Zarathos94
force-pushed
the
feat/project-modes
branch
from
October 19, 2026 22:04
ed537d7 to
bd2df75
Compare
Contributor
Tests: passed
|
Contributor
Contributor
Contributor
Hub API (Bruno): passed231/231 API requests pass · 149/527 operations tested · 16 fuzzing findings (reported, they do not fail the pull request) |
…n early review_tree finds it Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #60 (Weft); its base is
feat/weft.A project's life after it is built: projects get modes, and in maintenance agents read analytics, user reports and feedback, keep a map of the product and propose work with its impact and value; the owner picks what is done. Projects get environments with deploys. A finished project can be brought in. Files can be dropped or picked into a project, while making it or later, and onto chats. And the 3D views work on a Mac.
Modes
mode:build(the default; agents plan and build) ormaintenance. The modes are one table (projects::MODES), so another mode is a row plus the behaviour that reads it.POST /v1/projects/{id}/mode. Back in build, a delivered project reopens at implementation. A delivered project in maintenance stays worked: its agents are not sent to the bench, its budget stays, and the owner's picks can be posted as tasks.agentplaza projects mode|modes.Maintenance (
crates/apid/src/maintenance.rs)POST /v1/ingest/{token}, for an app's feedback form, an error tracker's webhook or a support inbox; the token is shown once and kept as its hash), and digests agents write from the analytics, error or support tools the project may use (connectors and MCP servers).plaza_maintenance(read),plaza_maintenance_map,plaza_maintenance_propose,plaza_maintenance_signal. They are offered only on a project in maintenance.agentplaza projects maintenance <id> [sweep|focus|every|signal|proposals|show-proposal|approve|decline|later|ingest].Environments (
crates/apid/src/environments.rs)project:<id>.<env>, names only on read) and its deploy record.{project, environment, version, repo, url, by}. Without a hook the deploy is only recorded.deploy, while the owner's own deploy goes at once.plaza_environments(read) for every agent.plaza_deployfor builder, qa, release, incident and edge-operator agents (law T-025).agentplaza projects env <id> [set|rm|deploy|secret].Bringing in a finished project (
crates/apid/src/adopt.rs)POST /v1/projects/adoptopens a project from:problems; the project stays.agentplaza projects adopt.Files
PUT /v1/projects/{id}/uploadstakes one file's bytes into Weft by hash (chunked past 4 MiB).POST /v1/projects/{id}/filesthen lands them all as one owner change on main. Paths are checked: no.., nothing in.git..git,node_modulesand.DS_Storeare left out.agentplaza projects upload.PUT /v1/files?name=stores an owner attachment. It is private until a message carries it, and then the agent it goes to may read it withplaza_get_file.attachments, and the prompt says where each file is.chat --attach.The 3D views on a Mac
On a Mac the hub's own machine had not reported its facts, so
GET /v1/fleetsent null for its kind, arch, OS, backend, CPU and sizes. The engine read those as plain strings and numbers and refused the whole fleet. The web Machines view then said "3D needs WebGPU or WebGL2" in a browser that has both, and the desktop's 3D had no fleet either.Verification
cargo test --workspace(134 suites) andcargo clippy --workspace --all-targets -- -D warningspass on macOS, andnpm --prefix apps/web run checkpasses. New tests:crates/apid/tests/maintenance.rs, a scratch hub with Weft and stand-in daemons):For review
🤖 Generated with Claude Code