Preserve the selected 9419 cut and the existing PR1778 repair history.
Complete pre-paint composer fitting without cancelling owner selection
motion, and retain pytest subtest failures without counting them as
repeated parent executions. Keep the reporter usable with older pytest.
Separate required and optional provider qualification as explicitly
chosen by the owner; both producers remain strict and optional failures
stay visible. Synchronize the 7.7.0 carriers and preserve contributor,
migration, rollback and known-limit disclosures.
Isolate synthetic staged-book fixtures from the real index. Start the
async contention oracle at sender readiness; its new 10s preparation
bound is separate from the unchanged contention/custody assertions.
The historical preparation delay remains unattributed.
Review: Fable whole change/coupling PASS (rl-20261013T024153-3f2eb954cb5c);
Grok whole alternative review PASS (a1389e7f); Astra whole review raised
C1/C2, closed by exact delta review97571944; Opus230b7366 checked the
seven-line contention fixture correction. Configured quorum failed;
these are retained substantive whole/delta reviews, not an invented
configured PASS. Prior full REDs and current focused proofs are preserved;
exact committed qualification follows. No tag is created by this commit.
Preserve the original PR history and implement owner-aligned unified header editing, explicit whole-list import, and credential origin boundaries. Repair canonical identity and dirty provenance; raise the MCP SDK floor to 1.10. Version-neutral local candidate, not publication or final review approval.
Every version carrier moves to 7.6.0 through ouroboros.tools.release_sync:
VERSION, pyproject.toml and uv.lock, web/package.json and its lock, the
gateway contract version, the README badge and download links, the two
install pages and the architecture header. The README Version History
gains the 7.6.0 row, which also generates the release notes, and the
oldest minor row (7.1.0) moves to the retained-in-Git sentence, keeping
the history within its limits (2 major, 5 minor, 5 patch rows).
The row discloses that the old dialogue memory is imported one way:
rolling the code back to 7.5.1 does not bring back what the new memory
recorded after the update. Its claims were checked against the code and
the commits since v7.5.1 by a separate review row, not against PR bodies.
Preserve PR1149 donor history and the interrupted port while integrating Telegram 1.2.9 over the published target. Route the bridge, downloads, notifier and companion menu through the existing skill settings authority. Retain masked form semantics, explicit clear and visible saved status. Keep tunnel and host traffic unchanged. Qualify authenticated CONNECT and SOCKS, direct restoration, masking and the actual browser form with local fake services.
Exact ten-file staged postimage retained for additive donor integration. Local preparation only; independent triad and scope review remain with the campaign owner.
Claudexor platform gate (API keys — subscription auth NOT covered) / toolchain · macos-latest · real managed Node/npm, no ambient Node, no harness install (push) Has been cancelled
Claudexor platform gate (API keys — subscription auth NOT covered) / toolchain · ubuntu-latest · real managed Node/npm, no ambient Node, no harness install (push) Has been cancelled
Claudexor platform gate (API keys — subscription auth NOT covered) / toolchain · windows-latest · real managed Node/npm, no ambient Node, no harness install (push) Has been cancelled
Claudexor platform gate (API keys — subscription auth NOT covered) / consumer · windows-latest · real pinned Codex local install + doctor, no login, no model task (push) Has been cancelled
Claudexor platform gate (API keys — subscription auth NOT covered) / live · macos-latest · claude · API key only, subscription NOT covered (push) Has been cancelled
Claudexor platform gate (API keys — subscription auth NOT covered) / live · ubuntu-latest · claude · API key only, subscription NOT covered (push) Has been cancelled
Claudexor platform gate (API keys — subscription auth NOT covered) / live · windows-latest · claude · API key only, subscription NOT covered (push) Has been cancelled
Claudexor platform gate (API keys — subscription auth NOT covered) / live · macos-latest · codex · API key only, subscription NOT covered (push) Has been cancelled
CI / build (dmg, macos-latest, macos-arm64, syft_1.50.0_darwin_arm64.tar.gz, syft, e32fdb9d47823fa633748a1efca2528fd77c37469ea93c9e40ab835da44e4cce) (push) Has been cancelled
CI / build (tar.gz, ubuntu-latest, linux-x86_64, syft_1.50.0_linux_amd64.tar.gz, syft, bf7b29ff57f06da30918266a0e1c2885a8f99784798d1bdb1628886aa015d788) (push) Has been cancelled
CI / build (zip, windows-latest, windows-x64, syft_1.50.0_windows_amd64.zip, syft.exe, 815ee6973ec5dff6a671d7f41b0e78835a8c45b91d5a39f4743ea1cee833d3be) (push) Has been cancelled
Integrate the reviewed contribution and synchronize release carriers with the cumulative changes since 7.4.11. Keep the owner-approved Windows artifact download limitation explicit.
Co-authored-by: Ouroboros <311266734+ouroboros-agent@users.noreply.github.com>
Claudexor platform gate (API keys — subscription auth NOT covered) / live · macos-latest · claude · API key only, subscription NOT covered (push) Waiting to run
Claudexor platform gate (API keys — subscription auth NOT covered) / live · ubuntu-latest · claude · API key only, subscription NOT covered (push) Waiting to run
Claudexor platform gate (API keys — subscription auth NOT covered) / live · windows-latest · claude · API key only, subscription NOT covered (push) Waiting to run
Claudexor platform gate (API keys — subscription auth NOT covered) / live · macos-latest · codex · API key only, subscription NOT covered (push) Waiting to run
Integration commit for the safe-check sprint (#1215#1143#1084#1112), merged as a057c5a4: bumps every version carrier to 7.4.10 and adds the README history row (the 7.4.5 patch row leaves the five-row window per P9).
Integration commit for the presentation batch (#1011#1087#1110#1154#1061#931#1073#516#869#498), merged as 553d5ac3: bumps every version carrier to 7.4.9 and adds the README history row (the 7.4.4 patch row leaves the five-row window per P9).
Integration commit for @komsikov's .gitignore change (#1253): bumps every version carrier to 7.4.8 and adds the README history row (the 7.4.2 patch row leaves the five-row window per P9).
Co-authored-by: Ouroboros <311266734+ouroboros-agent@users.noreply.github.com>
* fix(v7.2.2): preserve host message authorship through chat and replay
Host-composed command replies, runtime diagnostics, admission and lifecycle
notices now carry role="system" and a descriptive system_type at their
producer; send_with_budget persists both on progress records and history
replays the recorded voice, so a reload no longer re-narrates host text as
Ouroboros. Model narration, proactive replies, final answers and question
pointers stay model-authored, selected by the existing narration fact rather
than by reading text.
The Host Service named-operation view accepted only direction="out" terminal
rows, so a typed command reply would have stayed pending forever; it now
recognizes either output voice while keeping the exact-origin ownership check.
tests/test_host_message_voice.py scans runtime send calls and literal chat
envelopes with counted, reasoned model/transport exceptions, so a new
unstamped producer or a stale exception fails; computed aliases remain a
documented review duty. The complete personal census of 92 classified sites is
retained as task artifact host-message-census.json.
DESIGN defines authorship, the System row and the markdown asymmetry;
CHECKLISTS item 30 now covers backend UI-message producers, which closes the
stale pointer in the design-system chapter. Pre-existing unkeyed live-header
clearing and the untyped terminal-host-notice contract are unchanged.
Co-authored-by: Ouroboros <311266734+ouroboros-agent@users.noreply.github.com>
* feat(v7.4.0): add honest desktop notification attention cue
Add an optional launcher request_attention bridge that raises the live desktop window and requests one platform system sound, preserving browser and in-app fallbacks. Document the capability boundary, bump release carriers, and add focused tests.
Co-authored-by: Ouroboros <311266734+ouroboros-agent@users.noreply.github.com>
---------
Co-authored-by: Ouroboros <ouroboros@local.mac>
Co-authored-by: Ouroboros <311266734+ouroboros-agent@users.noreply.github.com>
While a client runs, Ouroboros can now reach the owner who left the window.
Settings -> Appearance gains a notification block beside the theme: a master
switch, the two required categories (a question or decision is waiting for you,
a task finished or stopped), a model-chosen category for messages Ouroboros
sends while it works, a separate off-by-default toggle for ordinary replies in
Main, sound, an off-by-default show-the-text choice, and a test notification.
The choices are stored per client exactly like the appearance choice, never
reach the server, and are excluded from the settings-dirty tracker so a
client-local toggle never offers to discard unsaved server settings.
Delivery is page-level: a system banner where this client exposes one and
permission is granted, otherwise the in-app surface plus one short tone, with
the status line stating which surface this client actually has. Either way a
click opens the source. No OS permission, Do Not Disturb or platform limit is
bypassed, and no native launcher path is added in this version.
web/modules/notifications.js keeps classification and the delivery gate pure
over one live frame plus the stored preferences, and takes ONE subscription per
client on the shared socket. It is deliberately NOT wired inside a chat
instance: an instance dies with its room, so a Project the owner never opened
would never have rung - the case notifications exist for. web/modules/chat.js is
byte-identical to before. Only live frames reach the notifier, so a reload
cannot re-notify without storing any notification state.
A finished task is recognised on the shape it actually arrives in (the live
task_done log frame) as well as the authored summary, and a conversation turn's
own ending stays the ordinary-reply category instead of claiming a task
finished; all of them collapse to one key per task. A child task never notifies
the owner: it escalates to its parent, and lineage is read from the delegation
facts frames carry because the terminal frame carries none. Importance needs no
new host field and no second model call - the existing proactive-message
discriminator is the signal.
Policy has one canonical home in docs/DESIGN.md section 9, including its
disclosed limits; docs/DEVELOPMENT.md carries the engineering invariant and the
architecture chapter names the owner. Two chapter byte budgets are raised with
stated reasons.
Verification: 1506 node tests; four browser journeys driving real socket frames
through ws.js (defaults off, one notification per event, silence on reload,
child conclusion withheld, unopened Project room reached, machine traffic
refused, click moves to the source); the deterministic repository gates (size
ratchet, generated manifests, README history limit, chapter budgets, docs sync)
pass. Three failures in the full battery are proven pre-existing by running the
same tests on the unmodified base commit.
Review-driven corrections in this commit, each with its own regression: a
`task_done` frame counts as an ending only with a SETTLED status, because an
update or restart teardown reports `interrupted` and requeues the same task id
(ringing there would also have burned that task's key and silenced its real
completion); a bare `task_terminal_status` chat row belongs to a DIRECT turn and
stays the ordinary-reply category instead of claiming a task finished; a child's
chat row is dropped whatever else it carries; the room gate mirrors
`mainThreadAccepts`, so an external owner transport notifies while the hidden
partition and A2A ids never do; and the client-level listener absorbs its own
errors, because it runs before the chat instances' handlers and `ws.emit` does
not isolate them.
Version carriers synced by ouroboros.tools.release_sync from VERSION:
pyproject.toml, uv.lock, web/package.json, web/package-lock.json,
web/modules/api_types.js (GATEWAY_CONTRACT_VERSION), README badge and direct
download links, docs/ARCHITECTURE.md, docs/install/index.html and
site/install/index.html. README Version History gains the 7.2.1 row; the
oldest patch row (6.113.1) leaves the table and is named in the "older
releases" sentence, keeping the five-patch-row limit.
Co-authored-by: Ouroboros <311266734+ouroboros-agent@users.noreply.github.com>
Version carriers synced by ouroboros.tools.release_sync from VERSION:
pyproject.toml, uv.lock, web/package.json, web/package-lock.json,
web/modules/api_types.js (GATEWAY_CONTRACT_VERSION), README badge and direct
download links, docs/ARCHITECTURE.md, docs/install/index.html and
site/install/index.html. README Version History gains the 7.2.0 row; the
oldest minor row (6.110.0) leaves the table and is named in the "older
releases" sentence, keeping the five-minor-row limit.
Co-authored-by: Ouroboros <311266734+ouroboros-agent@users.noreply.github.com>
Synchronize every release carrier to 7.1.0 through release_sync: VERSION,
pyproject.toml, uv.lock, web/package.json, web/package-lock.json,
GATEWAY_CONTRACT_VERSION, the README badge and direct-download links, both
install pages and the ARCHITECTURE header. Add the 7.1.0 Version History row
for the work accumulated on `ouroboros` since v7.0.0 and roll the oldest minor
row (6.109.0) off to respect the P9 cap.
The reference-book migration test pinned the ARCHITECTURE h1 with its
split-time version token. That h1 is a declared release carrier, so the pin
now keeps the whole line and lets only the version token follow VERSION.
The repository had no per-test timing evidence on any surface: `--durations`
appeared nowhere in the tree, so neither a local run, nor CI, nor the hermetic
commit gate could say which tests cost the suite its wall clock, and every
budget argument was an argument about remembered numbers.
`pyproject.toml` `addopts` is prepended to every argv, so appending
`--durations=25 --durations-min=1.0` after the `-m` lane block reaches the
default local lane, all four ci.yml full-suite commands and both gate passes
(which run with the candidate worktree as cwd and read its pyproject) from one
edited line, without touching the release-invariant workflow file.
The values are the owner-closed fork: `--durations=0` would print every test on
every local run of every install, while the twenty-five slowest with a
one-second floor give the same picture to the gate and to CI.
`test_default_addopts_carry_the_durations_report` pins both flags with their
values beside the existing markexpr pin, reusing its two-stage regex; the `-m`
group still parses off the line, so `test_lane_expr_matches_pyproject` stays
green.
Preserve execution-limit causes and separate Telegram host notices from the assistant silent chain. Remove the obsolete unconditional continuation instruction, align reviewed schema pins, and retire duplicate extraction size policy. Correct browser test flow control and synchronize final release carriers. Publication awaits final exact-candidate tests, review convergence and CI.
Co-authored-by: Ouroboros <311266734+ouroboros-agent@users.noreply.github.com>
Claudexor platform gate (API keys — subscription auth NOT covered) / live · macos-latest · claude · API key only, subscription NOT covered (push) Waiting to run
Claudexor platform gate (API keys — subscription auth NOT covered) / live · ubuntu-latest · claude · API key only, subscription NOT covered (push) Waiting to run
Claudexor platform gate (API keys — subscription auth NOT covered) / live · windows-latest · claude · API key only, subscription NOT covered (push) Waiting to run
Claudexor platform gate (API keys — subscription auth NOT covered) / live · macos-latest · codex · API key only, subscription NOT covered (push) Waiting to run
Second parent is the frozen upstream `ouroboros` head (23ab428f, 407 commits
since the merge base a76961de); first parent is v7.0.0-rc.8 (18b9832e).
Every upstream change lands in v7's owning leaf: S1 transplants keep upstream's
bodies (comments verbatim) under the call-time handle idiom, S2 hand-merges keep
both intents, S3 keeps v7 only with proof (retired 7.0 ABI surfaces, superseded
mechanisms). Per-symbol relocation ledger: docs/archive/v7next/LEDGER_CORRECTIONS.md
(F2 absorption section). Provisional decisions awaiting owner ratification:
D-18 (two-destination symbols), D-19 (acceptance rows follow upstream R2),
D-20 (acceptance_dialogue stays deleted), D-21 (tools/registry.py: facade
import block only).
Docs: upstream ARCHITECTURE/DEVELOPMENT as the base with compact v7 deltas;
bookkeeping moved to docs/archive/v7next. Size-ratchet manifest, domain
manifest and generated inventories regenerated; new leaves: tools/write_shape
walker, gateway/cost_breakdown, tools/core_secret_paths; provider_catalogs.py
and acceptance_dialogue.py removed (v7 owners).
Maintainer landing merge of kazzand's DeepSeek direct-provider work
(head 191f7c6e) onto ouroboros @ 83a69e67. The contributor branch is
kept as-is; nothing is rewritten.
Conflict resolution only, no behavioural changes:
- ouroboros/llm.py: keep both the DeepSeek base-URL import and the
target's reasoning_artifacts import; take the PR's either-identity
vision judgement.
- docs/DEVELOPMENT.md: keep the target's condensed direct-OpenAI
paragraph and append the PR's DeepSeek effort-carriage sentence.
- docs/ARCHITECTURE.md: take the target's consolidated document and
re-insert the PR's DeepSeek rows (module map, readiness gate,
defaulting, settings key, review fallback, provider specifics).
- ouroboros/size_ratchet_manifest.py: take the target's generated
manifest; it is regenerated on the merged tree in a follow-up commit.
Carriers to 7.0.0-rc.2 (PEP 440 7.0.0rc2 in pyproject/uv.lock); README history
row names why rc.1 has no assets. This candidate carries the lanes merged so far
after the owner's batch №13: the split compaction suite, the migration projection
report and the Windows kernel lock tier (item 1 = B) — the tag's 3-OS matrix is
that tier's first Windows execution.
Owner's ask (batch №13 item 14): a pre-release tag so the packaged apps build
and can be installed. Every version carrier moves to 7.0.0-rc.1 (pyproject and
uv.lock in PEP 440 form 7.0.0rc1); check_worktree_version_sync is clean; the
README history row buckets under 7.0.0. The runtime is byte-identical to
c9f5c1a4. The final delivery (fast-forward of `ouroboros`, v7.0.0, promotion)
stays the owner's own act (item 5 = B). Ledger: «From the owner's batch №13 answers».
ABI 7.0 -- the v7 refactor lands on the live tip. Every version carrier moves
together: VERSION, pyproject.toml, uv.lock, web/package.json, the browser
GATEWAY_CONTRACT_VERSION, the README badge, download references and Version
History row (with the first-boot disclosure: pre-7.0 task results are quarantined,
retired comma-list review settings are replaced by the shipped panel; back up
data/ or preview with scripts/rc_audit.py), both install pages' release-asset
links, and the docs/ARCHITECTURE.md header. The oldest patch row leaves the
README history to hold the P9 limit. docs/CHECKLISTS.md drops the clause that
named the removed ouroboros/contracts/api_v1.py compatibility module (owner
batch #11 item 3=A, ABI-3 / ABI-6d).
The tree is the v7next campaign candidate: live upstream a76961de plus every
transplanted v7 delta per ADOPTION_v7next.md (38 done, 15 owner- or
operator-recorded post-release rows; scripts/v7next_adoption.py --release rc 0).
The manual-test STOP applies: no merge, no tag before the owner's test.
Second rolling sync of the campaign tree with the live upstream branch
(40 upstream commits since the previous merge-base f3fbfdbb). Automerge
resolved 18 of the 25 files both sides touched; the seven textual conflicts
and the six semantic ones the automerge hid were resolved by class:
- generated: ouroboros/size_ratchet_manifest.py taken from upstream and
regenerated on the merged tree (the upstream test
tests/test_ui_smoke_project_continuity.py entered the 1001-1500 band; its
upstream rationale is carried verbatim); domains, inventories regenerated
(FROZEN_CONTRACTS_INVENTORY.md).
- protected prose: prompts/SAFETY.md takes upstream's compressed shape; the
retired OUROBOROS_SCOPE_REVIEW_FLOOR control (removed outright by v7next
ABI-5, owner Q10=A) is dropped from the owner-only controls sentence and
the protected-path mirror is regenerated from the merged
runtime_mode_policy (36 paths + the contracts prefix). prompts/SYSTEM.md
(rewritten upstream) gets the v7next safety-critical set (registry
split organs, tool_result). Both mirrors are pinned by
tests/test_packaging_sync.py.
- tests: upstream's Windows/CRLF/argv fixes win over the campaign's interim
shims (capability predicates argv lists, golden _posix fold, telegram
parity pytest-timeout instead of signal.alarm, chat_plain_system_rows CRLF
normaliser, quarantine test import). Upstream's new governance and
terminal-receipt tests are adapted to the v7 contracts they meet on this
tree: the module-level registry_guard_process._run_shell_safety_check and
the typed ToolResult code SKILL_STATE_WRITE_BLOCKED (D02/D04), the
shell_outputs home of _sensitive_output_component_reason, and the ABI-2
task-result stamp (unstamped fixture rows are quarantined by the reader,
owner Q8=B) in tests/test_terminal_delegation_receipt.py. The git catalog
schema pin in tests/test_git_extraction.py moves to the bytes produced by
upstream's advisory_review -> preflight_review description rename
(332a02f1); the catalog itself is unchanged.
Gates on the merged tree: ruff F, check_domains, inventories --check,
size_ratchet --check, v7next_adoption, git diff --check all rc 0; the
targeted suites for every conflicted or both-sides-touched file and
web node --test (847) pass. The full CI-shape battery follows as a
separate evidence run.
Claudexor platform gate (API keys — subscription auth NOT covered) / live · macos-latest · claude · API key only, subscription NOT covered (push) Has been cancelled
Claudexor platform gate (API keys — subscription auth NOT covered) / live · ubuntu-latest · claude · API key only, subscription NOT covered (push) Has been cancelled
Claudexor platform gate (API keys — subscription auth NOT covered) / live · windows-latest · claude · API key only, subscription NOT covered (push) Has been cancelled
Claudexor platform gate (API keys — subscription auth NOT covered) / live · macos-latest · codex · API key only, subscription NOT covered (push) Has been cancelled
CI / build (zip, windows-latest, windows-x64, syft_1.50.0_windows_amd64.zip, syft.exe, 815ee6973ec5dff6a671d7f41b0e78835a8c45b91d5a39f4743ea1cee833d3be) (push) Has been cancelled
CI / build (dmg, macos-latest, macos-arm64, syft_1.50.0_darwin_arm64.tar.gz, syft, e32fdb9d47823fa633748a1efca2528fd77c37469ea93c9e40ab835da44e4cce) (push) Has been cancelled
CI / build (tar.gz, ubuntu-latest, linux-x86_64, syft_1.50.0_linux_amd64.tar.gz, syft, bf7b29ff57f06da30918266a0e1c2885a8f99784798d1bdb1628886aa015d788) (push) Has been cancelled
Capability preservation as a first-class invariant (#447 stages 1-3),
shape-first OpenRouter same-model failover derived from the replayed
reasoning artifact (#468), the delegation/chat-truth issue sprints, the
rich chat stack, Claudexor runtime 3.9.5, and a green 3-OS matrix (the
serial service-log suites no longer race the child, web source pins are
CRLF-safe, the size-ratchet manifest is exact). This tag also carries the
untagged 6.113.5.
Co-authored-by: Ouroboros <311266734+ouroboros-agent@users.noreply.github.com>