Batch: agent work from agent-develop #80

Merged
EduarD3V merged 41 commits from agent-develop into develop 2026-10-08 07:32:58 +02:00
Collaborator

One batch of agent work, integrated on agent-develop and conflict-free against develop.

Commits:

84ff46b Merge pull request 'Issue #66: Docs sync — verify every document against the code and fix the drift' (#69) from issue/66-docs-sync into agent-develop
4d09445 Merge pull request 'Sync develop into agent-develop' (#61) from develop into agent-develop
924b95e Merge branch 'agent-develop' into issue/66-docs-sync
62cb34f Merge pull request 'Issue #73: Dark/Light/System theme + selector for marketing/ and docs-site/' (#77) from issue/73-theme-selector into agent-develop
1033abd docs-site: three-state theme switch with system following
1fdc243 marketing: dark/light/system theme with a nav selector and pre-paint init
55872c1 review(agent-pipeline): phase3 no longer contradicts its own S10/S13 headings
aead4df review(agent-pipeline): PR63's head reported statuses; silent ticks are not not-green
2d1d8bb docs(skills): three forgejo.py copies, and what actually blocks auto-merge
bb39774 docs(scripts): the TUI registry is five services, not three
f354d11 docs(agent-pipeline): S10 is built, the guards use the PR base ref, run-capture is off
9dd9f93 docs(agent-pipeline): the integrator is wired; what blocks it is the CI trigger
cd9b1d6 docs(agents): the branch law names agent-develop as the PR target

Merged issue PRs:
Merge pull request 'Issue #66: Docs sync — verify every document against the code and fix the drift' (#69) from issue/66-docs-sync into agent-develop
Merge pull request 'Sync develop into agent-develop' (#61) from develop into agent-develop
Merge branch 'agent-develop' into issue/66-docs-sync
Merge pull request 'Issue #73: Dark/Light/System theme + selector for marketing/ and docs-site/' (#77) from issue/73-theme-selector into agent-develop

CI runs on this PR: the five required contexts on develop must be green before it is merged.
Every contained PR was already green on its own branch.

Refs (#26 etc. - no closing keywords).

One batch of agent work, integrated on `agent-develop` and conflict-free against `develop`. Commits: ``` 84ff46b Merge pull request 'Issue #66: Docs sync — verify every document against the code and fix the drift' (#69) from issue/66-docs-sync into agent-develop 4d09445 Merge pull request 'Sync develop into agent-develop' (#61) from develop into agent-develop 924b95e Merge branch 'agent-develop' into issue/66-docs-sync 62cb34f Merge pull request 'Issue #73: Dark/Light/System theme + selector for marketing/ and docs-site/' (#77) from issue/73-theme-selector into agent-develop 1033abd docs-site: three-state theme switch with system following 1fdc243 marketing: dark/light/system theme with a nav selector and pre-paint init 55872c1 review(agent-pipeline): phase3 no longer contradicts its own S10/S13 headings aead4df review(agent-pipeline): PR63's head reported statuses; silent ticks are not not-green 2d1d8bb docs(skills): three forgejo.py copies, and what actually blocks auto-merge bb39774 docs(scripts): the TUI registry is five services, not three f354d11 docs(agent-pipeline): S10 is built, the guards use the PR base ref, run-capture is off 9dd9f93 docs(agent-pipeline): the integrator is wired; what blocks it is the CI trigger cd9b1d6 docs(agents): the branch law names agent-develop as the PR target ``` Merged issue PRs: Merge pull request 'Issue #66: Docs sync — verify every document against the code and fix the drift' (#69) from issue/66-docs-sync into agent-develop Merge pull request 'Sync develop into agent-develop' (#61) from develop into agent-develop Merge branch 'agent-develop' into issue/66-docs-sync Merge pull request 'Issue #73: Dark/Light/System theme + selector for marketing/ and docs-site/' (#77) from issue/73-theme-selector into agent-develop CI runs on this PR: the five required contexts on `develop` must be green before it is merged. Every contained PR was already green on its own branch. Refs (#26 etc. - no closing keywords).
AGENTS.md still said every change lands on develop and issue branches are cut
from it. Three live sources disagree: the runner cron's law 2 sends issue
branches from origin/agent-develop and targets agent-develop, origin/agent-develop
is an ancestor of HEAD while origin/develop is not, and the integrator cron (PR
#61) operates agent-develop -> develop as a promotion.

State the three-branch flow: agent-develop absorbs agent PRs, develop receives
one promotion PR per batch, main receives the release cut.

Refs #66
integration-branch.md said `integrate.py` does not exist and nothing merges into
agent-develop — stale since the tool and its cron landed. triage.md §3 and
agent-issue-pipeline.md §5 repeated the same claim in passing.

Read back what is actually true: integrate.py is wired as the gotoi-integrator
cron (every 30 min, no-agent) and does trial-merge + required-context scoring +
sync + one promotion PR, but neither workflow triggers a pull_request run on
agent-develop (build-agent.yml:15, agent-guards.yml:10), so the five required
contexts never report, every PR scores not-green, and every merge so far is the
operator's (PR#63/#64/#65, merged_by EduarD3V).

Refs #66
Three claims that no longer match the code:
- phase3-design.md S10 'not built' — hidden-tests.sh (manifest/inject/run/proof)
  landed 2026-10-06 12:20 (commit 70d37dd), after this file (a385678, 10:17);
  hidden-tests.md describes the proof. Mark built, keep the container gap.
- anti-tampering.md cites --base origin/develop; agent-guards.yml:37,44 passes
  --base "origin/$BASE_REF" with BASE_REF: github.base_ref, so the guard runs on
  main PRs too.
- reviewer.md says the report file is archived hourly by gotoi-run-capture; that
  cron job is disabled (paused 2026-10-07T07:37), so the file stays in RUN_ROOT.

Refs #66
scripts/tui.py SERVICES has middleware, postgres, dashboard, docs (:3000) and
marketing (:5174); scripts/dev.sh:27 SERVICE_IDS matches. The layout diagram
showed three services, the key row read 1..3, and the prose said 'only gotoi
services (middleware, postgres, dashboard)'.

Also fix the branch-switch sentence: _restart_repo_services restarts every
running service whose type is 'bun', which now includes docs and marketing.

Refs #66
The skill said two API-helper copies; there are three, md5-identical
(679a921f6181cfe6333c2acacbc8c4f1) — repo, ~/.claude and the orchestrator's
~/.hermes skill. The closing paragraph said the integrator 'does not exist';
it is wired as the gotoi-integrator cron and the runner law already targets
agent-develop — it merges nothing because CI never reports on an agent-develop
PR.

Refs #66
The evidence block claimed every merge into the repo happened on heads with an
empty status list and that every cron tick prints not-green. API check: PR#63's
head carries 21 statuses (CI runs on develop PRs), and only ticks that see an
open PR print not-green (21 of 50 recorded outputs; the rest are silent).

Refs #66
The heading said S10 built while 'What remains' still listed it as pending, and
S13 read 'built once the queue carried real work' next to an empty-queue verdict
in the present tense. Remaining item is now the S10 container path; S13's
requirement/evidence text is marked as the original verdict and the planner is
described as offline-only (queue-plan.md: nothing calls it yet, selftest 8/8).

Refs #66
Three-state Light/Dark/System control in the nav pill (desktop) and the mobile
panel, backed by a segmented group of the installed Button. The choice persists
under gotoi-theme — the same key the dashboard uses — and app.html resolves it
before first paint, so there is no flash of the wrong theme. The dark token
ladder already shipped; only the switch and the init were missing.

Refs #73
fumadocs already wires next-themes (class attribute, system default, pre-paint
inline script), but baseOptions left themeSwitch at its two-state default. Set
mode to light-dark-system so the docs sidebar and mobile header offer
Light/Dark/System, reuse the same component in the landing header so the site
root has a control too, and pin the switch's View Transitions cross-fade off
under prefers-reduced-motion.

Refs #73
Reviewed-on: #77
Merge pull request 'Issue #66: Docs sync — verify every document against the code and fix the drift' (#69) from issue/66-docs-sync into agent-develop
Some checks failed
CI and agent release / check-docs (pull_request) Successful in 26s
agent-guards / test-tampering (pull_request) Failing after 31s
CI and agent release / test-agent (pull_request) Successful in 1m40s
CI and agent release / build (pull_request) Has been cancelled
CI and agent release / release (pull_request) Has been cancelled
CI and agent release / publish-images (pull_request) Has been cancelled
CI and agent release / test-middleware (pull_request) Has been cancelled
CI and agent release / test-dashboard (pull_request) Has been cancelled
84ff46b58c
A retry that applyResult already resolved as already_done still fell through to
recordOutcome, the circuit breaker, rollback, recheck, and incident writes — so
duplicate POSTs inflated plan.verifiedStreak/totalVerified, double-counted
failures, and recordSuccess cleared a tripped circuit key (fail-open).

Return early on already_done, matching UC-OP-04 and UC-AG-10.

Refs #67
POST /agents/bulk group-add/group-remove checked only the agent rows, so any
operator could write another org's group hostnames. GET /plans/:id/executions,
/compatibility, and /health returned sibling-org rows for shared plans
(disk-cleanup). Both now resolve visibility against the active organization.

Refs #67
The compatibility guard was 'counted <= 1', which still passes when a single
sibling-org agent leaks, and /plans/:id/health (also filtered by 30fa4e2) had
no assertion at all. Pin rows.length, compatibility count, and health.executions
to 0 for a reader outside the owning org.

Refs #67
Merge pull request 'Issue #67: Bug hunt — middleware and agent defects proven with red-first tests' (#74) from issue/67-bug-hunt into agent-develop
Some checks failed
CI and agent release / check-docs (pull_request) Successful in 33s
CI and agent release / test-agent (pull_request) Successful in 1m33s
CI and agent release / build (pull_request) Has been cancelled
CI and agent release / release (pull_request) Has been cancelled
CI and agent release / publish-images (pull_request) Has been cancelled
agent-guards / test-tampering (pull_request) Has been cancelled
CI and agent release / test-dashboard (pull_request) Has been cancelled
CI and agent release / test-middleware (pull_request) Has been cancelled
d1884b4c49
The instance-operator rule for GET /plans/ai/config sat below the blanket
`if (m === 'GET' || m === 'HEAD') return 'viewer';`, so it was unreachable:
any authenticated org member could read the stored AI provider headers,
which may carry a private provider token.

Hoist the rule above the blanket GET rule and pin it with a red-first test.

Refs #68, UC-MW-167
Merge pull request 'Issue #68: Security review — middleware and agent (authn/authz, HMAC, secrets, SSRF)' (#75) from issue/68-security-review into agent-develop
Some checks failed
CI and agent release / check-docs (pull_request) Successful in 30s
agent-guards / test-tampering (pull_request) Has been cancelled
CI and agent release / test-dashboard (pull_request) Has been cancelled
CI and agent release / build (pull_request) Has been cancelled
CI and agent release / release (pull_request) Has been cancelled
CI and agent release / publish-images (pull_request) Has been cancelled
CI and agent release / test-agent (pull_request) Has been cancelled
CI and agent release / test-middleware (pull_request) Has been cancelled
98da205212
The accent tint is a per-user preference; the operator layout gate no longer
applies to it. Refs #70
Personalization becomes a Settings submenu item so every signed-in user
reaches it; the Operator group keeps only instance-operator surfaces. Refs #70
UC-FE-80/-FE-83/-FE-85/-FE-99 lists now name /settings/personalization; the e2e
walk follows the old /operator URL as a redirect. Refs #70
UC-FE-99 now describes a signed-in-user Settings page with a 308 shim on the
old route; UC-FE-08/-FE-80 drop it from the Operator module. Refs #70
Refs #70
Refs #70
Merge pull request 'Issue #70: Move personalization page to /settings/personalization (user-level)' (#76) from issue/70-personalization-move into agent-develop
Some checks failed
CI and agent release / check-docs (pull_request) Successful in 26s
agent-guards / test-tampering (pull_request) Successful in 1m0s
CI and agent release / test-dashboard (pull_request) Has been cancelled
CI and agent release / build (pull_request) Has been cancelled
CI and agent release / release (pull_request) Has been cancelled
CI and agent release / publish-images (pull_request) Has been cancelled
CI and agent release / test-agent (pull_request) Has been cancelled
CI and agent release / test-middleware (pull_request) Has been cancelled
60d98cff33
SplitList.Items now owns the row context menu (target resolved from
data-item-id), the Select / Select all / Clear selection group, and the
selection bar; SplitList.Item renders the checkbox while selection mode is
on. app.css scopes a prefers-reduced-motion rule to the menu primitives.

Refs #72
The page keeps its decommission flow (two-step ConfirmDialog, typed
DECOMMISSION, api.agents.bulk) and supplies only menu/bulk snippets; the
former picking/pickedIds/ctxId state and data-agent-id plumbing are gone.

Refs #72
/plans: open plan, change requests. /plans/rules: open, enable/disable,
delete (through the existing ConfirmDialog). /agents/machines: open
profile, control. Only /agents/bulk exists, so these pages carry no bulk
buttons rather than looping single-item requests behind the operator.

Refs #72
Refs #72
Refs #72
Refs #72
Refs #72
Refs #72
Refs #72
Refs #72
Merge pull request 'Issue #72: shared SplitList row contextual menu + bulk actions (plans, rules, installs, machines)' (#78) from issue/72-datatable-row-menu into agent-develop
Some checks failed
CI and agent release / check-docs (pull_request) Successful in 23s
agent-guards / test-tampering (pull_request) Successful in 37s
CI and agent release / test-agent (pull_request) Successful in 1m30s
CI and agent release / test-dashboard (pull_request) Successful in 2m33s
CI and agent release / build (pull_request) Has been cancelled
CI and agent release / release (pull_request) Has been cancelled
CI and agent release / publish-images (pull_request) Has been cancelled
CI and agent release / test-middleware (pull_request) Has been cancelled
766f4f25ab
# Conflicts:
#	scripts/agent-pipeline/integrate.py
Merge pull request 'Chore: integrator tolerates disabled CI contexts on agent-develop' (#79) from chore/integration-branch into agent-develop
All checks were successful
agent-guards / test-tampering (pull_request) Successful in 35s
CI and agent release / check-docs (pull_request) Successful in 30s
CI and agent release / test-agent (pull_request) Successful in 1m30s
CI and agent release / test-middleware (pull_request) Successful in 8m35s
CI and agent release / test-dashboard (pull_request) Successful in 9m33s
CI and agent release / build (pull_request) Has been skipped
CI and agent release / release (pull_request) Has been skipped
CI and agent release / publish-images (pull_request) Has been skipped
99a5b20f2f
EduarD3V merged commit 9db4ace4f7 into develop 2026-10-08 07:32:58 +02:00
EduarD3V approved these changes 2026-10-08 07:33:03 +02:00
Sign in to join this conversation.
No description provided.