Repository navigation
[validation-only] SpaceApp #181 integration with upstream 14117daa - #2
Merged
1932819331hy-debug merged 32 commits intoOct 19, 2026
Merged
Conversation
From the 2026-10-16 pilot rehearsal on the Linux, Windows 11 and macOS lab VMs: - F1: workspace add/remove apply the mounts to the running core and CLI services (compose recreates them only when the mounts changed); on failure they say to run up. - F3: on Linux, workspace add prints the setfacl command that lets the CLIs (uid 10001) write to a host-owned folder without changing its owner. - F4: OpenCode gets the Anthropic and OpenAI keys set for Claude Code and Codex, so a non-Zen key no longer has to go into credentials set opencode (which broke free models). - F8: backup adds spaceapp-config.json (workspace list) and cli-config.tar.gz (Claude, Codex and OpenCode settings: MCP servers, base URLs; no logins or keys); restore puts the settings back and lists the workspaces to add again. A failure there keeps the backup. - F9: uninstall --purge-data accepts purgeConfirm in --answers for unattended removal.
…ilot F13) Naming invariant 2026-10-13: the canonical memory is Space Memory. New installs seed space_memory.md and space_memory_monthly.md (SPACE_MEMORY_* paths in compose); an install made earlier moves its gemini_history*.md files once at core start and keeps the old names as links (deploy/docker/memory-names.sh). Space readers already accept both names and skip the links. A restored older backup is moved the same way on the next start.
Agents often check their work with a short python3 script; the CLI image had none. python3-minimal adds about 13 MB (apt reports 12.6 MB on spaceapp-cli 1.1.6), far under the 2800 MiB CLI image budget. The apt lists leave in the same layer.
With an API key the pinned 2.1.206 started on Opus 4.8. 2.1.301 is the version Space stable runs (and npm latest on 2026-10-16); license metadata unchanged (SEE LICENSE IN README.md), still owner-installed only and not in the image. The release acceptance checks the model a fresh Claude pane starts on.
…-segment session tokens, fail-closed revocations, logout reports unsaved revocations; install telemetry after the owner's Yes; review fixes) Sanitized source @ b9122162ac (4409 files). See CHANGELOG.md.
…aths printed doubled backslashes)
…s each command (pilot F17; seccomp default + userns, no AppArmor profile)
…ile into the project directory (F17 lab finding)
…revocation fixes and the route-guard test fix; CI installs ffmpeg for the Nous attachment tests) Sanitized source @ 732e9f3a78. See CHANGELOG.md.
…namespaces (F17, operator decision 2026-10-17)
…4, not for release yet) Plan clipboard:evAaFYqrgDfd step 5. user enable turns SpaceApp accounts on (core SPACE_MULTI_USER_ENABLED); user add <user-id> [--memory 2g] gives an invited user the service spaceapp-cli-<slug> with its own CLI state, memory, workspaces and socket volumes and secrets/users/<slug>/providers; the core gets the user -> pane host socket map (cli-hosts.json, SPACE_CLI_HOST_SOCKETS_FILE). credentials set|remove and workspace add|remove|list take --user <user-id> and reach only that user's container. Users require isolated access (host-root would let every agent read the whole host). user remove drops the container and keeps its volumes. Kept off the release branch until the multi-user rehearsal (step 6) passes and the operator turns it on.
Security review 2026-10-17 (plan clipboard:evAaFYqrgDfd step 6): spaceapp-cli-<slug> joined the shared spaceapp network, so a user's agent could reach the owner's internal services (temporal, codex-lb, headroom). It now joins spaceapp-user-<slug> only: internet, no other service and no other user. The core still reaches it only through its socket volume.
… again Plan clipboard:evAaFYqrgDfd step 6: accounts, rooms and shares come back with the database, but each user's CLI container and workspaces are host configuration; restore prints user enable, user add <id> and workspace add ... --user <id> for what the backup had, like the owner's workspaces.
…nly where the host allows it (F17)
…y (never keys or logins); restore and 'user restore' put them back (MU-004)
…vider install --user installs into that user's container (multi-user step 6)
…, not the backup restore saves first (lab recheck 2026-10-18)
… options, per-user backup and restore)
… (see docs/operations.md)
…her work: pilot fixes F1/F3/F4/F8/F9/F11/F13/F17/F18, per-user CLI containers and the multi-user core MU-001/002/003/007; install telemetry; session revocation and review fixes)
…y private (load gate script, Vault broker units, Vault MCP server; 1.1.6 re-cut)
…ngine, which stays private (1.1.6 re-cut)
…Design pane's tenth module; source fix 3f302e9713 is not in the 1.1.6 base f8803d5d96)
…work, the multi-user core, the public-suite fixes and test exclusions; OpenCode 1 kept; install telemetry; session revocation and review fixes)
…; Linux, Windows, macOS and all profiles on e2be6ab; known exception: OpenCode Zen refuses the free-model first answer from the lab address, operator-approved; AI checks on Claude)
…ator decision efc30984) OpenCode Zen refused every free model from the lab's address while 1.1.6 was tested, so the free-model first answer could not run. validateEvidence now accepts a missing first-agent proof for a platform only when the version is exactly 1.1.6 and release/acceptance.json names operator decision efc30984 for that platform; every other version, platform and check stays as strict as before. Tests: 1.1.6 with the decision passes; without it, with another decision, for one platform only, for another scenario or for 1.1.7 it fails.
…ted on e2be6ab, source f8803d5d96; operator-approved Zen exception efc30984 named per platform)
…reserve source-stack isolation)
| else if (name === "required" || name === "allowed") { | ||
| // A rule lists classes and [custom] characters separated by commas; one required rule means "at least one of these". | ||
| let alphabet = ""; | ||
| for (const token of value.match(/\[[^\]]*\]|[^,\s]+/g) ?? []) { |
| const call: Call = { url, googleKey: headers["x-goog-api-key"] ?? null, bearer: headers.authorization?.replace("Bearer ", "") ?? null, | ||
| body: init?.body ? JSON.parse(String(init.body)) as Record<string, unknown> : null }; | ||
| calls.push(call); | ||
| if (url.startsWith("https://api.openai.com")) return url.endsWith("/models") ? json({ data: [] }) : json({ data: [{ embedding: [1, 0] }], usage: { prompt_tokens: 3 } }); |
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.
Independent integration validation of upstream oll4com#181. Do not merge this fork-only PR upstream or mark Ready.
Current upstream main 14117da adds 31 commits since base 98bcb38. Candidate merge commit 73237e2 has parents c0bafc5 (existing oll4com#181) and 14117da (upstream main). The tree is upstream main plus the 24 PR-owned changes; four overlapping files were combined manually, retaining upstream's progress/media/design instructions and source-stack-owned memory isolation. We scoped installed-only Nous progress-script instructions to installed mode. Git Tree audit: all 4,734 upstream files preserved and 11 new PR files added, with no unowned changes or unexpected deletions.
Run full source-stack Linux/macOS lifecycle, container matrix, and security/CI tests on this candidate. Do not update feat/dev-stack-65 before validating. Known sanitized export-provenance and fork dependency review exemptions remain; do not count them as code pass. AI-assisted merge resolution disclosed.
Evidence update (2026-10-19 JST)
run-spaceapptests on both this merge candidate and unaltered upstream main at 14117da. Upstream baseline: run 39188999548; candidate: run 39190882776. The failures are POSIX permission/ACL assumptions in launcher tests, not introduced by this branch merge, but they are still red check results. Do not patch unrelated launcher code to hide them.feat/dev-stack-65atc0bafc5until this candidate's Linux/macOS source-stack evidence is complete and current source changes are independently reviewed. Never force-push, replace the older PR, or claim the Windows failures as green.