Skip to content

chore: adopt NovaForge compute contract - #24

Closed
kristoffersodersten wants to merge 2 commits into
codex/ci-foundation-repairfrom
codex/sod-795-novaforge-adoption
Closed

chore: adopt NovaForge compute contract#24
kristoffersodersten wants to merge 2 commits into
codex/ci-foundation-repairfrom
codex/sod-795-novaforge-adoption

Conversation

@kristoffersodersten

Copy link
Copy Markdown
Owner

Summary

  • adopt the mandatory NovaForge compute-distribution contract
  • bind SelectPilot development to the clean Hetzner workspace
  • add fail-closed local workload guard and VS Code remote tasks
  • document the Mac Mini control / Hetzner compute boundary

Stack boundary

This PR targets codex/ci-foundation-repair so its diff contains only SOD-795. It does not modify PR #22 or represent delivery to main. After #22 merges, this PR can be retargeted to main without scope pollution.

Verification

Exact branch SHA: 6664113f88fb59db607d439ec5c86af9628a404e

Local bounded checks:

  • remote-compute-audit
  • heavy-command guard refusal: exit 2
  • bounded Git command allowance: exit 0
  • bash -n scripts/check-compute-distribution.sh
  • git diff --check
  • SSH commit signature verified

Hetzner:

  • pnpm install --frozen-lockfile
  • pnpm lint
  • pnpm lint:manifest
  • pnpm typecheck
  • pnpm test: 5 panel + 25 server tests
  • pnpm build
  • bridge-backed pnpm test:e2e: 6 passed, 1 Chrome-extension test skipped because no Chrome executable was declared on the Linux host

Risk

Documentation/operator-contract change only. No SelectPilot runtime or product artifact includes NovaForge tooling.

Verification: remote-compute-audit; compute guard heavy/light refusal checks; bash -n; git diff --check
Copilot AI lite review requested due to automatic review settings August 18, 2026 17:58

Copilot AI 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.

Pull request overview

This PR introduces the NovaForge compute-distribution contract to bind development workflows to a Mac Mini (control surface) / Hetzner AX102 (heavy compute) split, including documentation, a local heavy-workload guard, and VS Code tasks to support remote proof workflows.

Changes:

  • Adds versioned contract documentation describing the compute boundary, remote workspace proof rules, and operator tooling requirements.
  • Introduces a local guard script to fail-closed on known heavy workloads when run locally.
  • Adds VS Code tasks + README/AGENTS references to make the contract actionable for contributors.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
scripts/check-compute-distribution.sh Adds a local guard that blocks known heavy workloads from being run on the Mac Mini.
README.md Links contributors to the compute-distribution documentation.
docs/remote-workspace.md Documents remote workspace identity and proof rules for heavy commands.
docs/operator-tooling.md Defines required operator tools and their fail-closed behavior contract.
docs/novaforge-ax102-stack.md Documents the AX102 “NovaForge” role/topology and forbidden topologies.
docs/compute-distribution.md Establishes the compute boundary rules and lists versioned contract surfaces.
AGENTS.md Adds agent-facing summary of the compute-distribution contract surfaces and rules.
.vscode/tasks.json Adds tasks for guard checks and remote compute workflows.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread .vscode/tasks.json
Comment on lines +4 to +9
{
"label": "Compute Guard: Check command",
"type": "shell",
"command": "${workspaceFolder}/scripts/check-compute-distribution.sh \"${input:guardCommand}\"",
"problemMatcher": []
},
Comment on lines +39 to +42
```text
Remote host: hetzner-server
Remote workspace: /home/krille/workspaces/selectpilot
```
Comment thread docs/remote-workspace.md
Comment on lines +5 to +8
```text
Host: hetzner-server
Workspace: /home/krille/workspaces/selectpilot
```

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6664113f88

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .vscode/tasks.json
{
"label": "Remote Compute: Run command on Hetzner",
"type": "shell",
"command": "${env:HOME}/.codex/bin/remote-compute-run -- ${input:remoteCommand}",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Quote remote commands before the local shell parses them

In the new VS Code shell task, ${input:remoteCommand} is interpolated unquoted, so shell operators are handled by the local task shell rather than sent to Hetzner. For example, entering pnpm install && pnpm test passes only pnpm install to remote-compute-run, then executes pnpm test locally after the wrapper succeeds, defeating the task's compute boundary. Pass the input through structured arguments or safely quote it as a single remote command.

AGENTS.md reference: AGENTS.md:L19-L25

Useful? React with 👍 / 👎.

Comment on lines +105 to +106
for pattern in "${heavy_patterns[@]}"; do
if [[ "$normalized" == *"$pattern"* ]]; then

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Reject the repository's indirect heavy scripts

The substring-only classifier allows pnpm setup:local, even though package.json:13 expands that command into pnpm install, pnpm build, and the macOS bootstrap that installs and pulls models; the README also presents this command in Quick Start. An operator checking that command receives mac_allowed_bounded_smoke and may run precisely the dependency installation, build, and background workload this contract requires on Hetzner. Resolve package scripts or explicitly classify these repository entry points before returning the safe result.

AGENTS.md reference: AGENTS.md:L19-L32

Useful? React with 👍 / 👎.

"meilisearch"
"tantivy"
"release"
"package"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Avoid matching generic words inside allowed Git commands

Because every pattern is matched as an arbitrary substring, the generic package entry makes a permitted command such as git diff package.json exit with blocked_local_heavy_compute. This incorrectly prevents a routine local Git inspection explicitly allowed by the contract; classify command tokens or concrete heavy operations instead of generic words that commonly occur in paths.

AGENTS.md reference: AGENTS.md:L10-L17

Useful? React with 👍 / 👎.

@kristoffersodersten

Copy link
Copy Markdown
Owner Author

Superseded by protected main PR #22. The NovaForge adoption commit was integrated as signed commit 19998de; verification continues on #22.

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.

2 participants