docs(f6-sync): ledger section, domain rows, regenerated ratchet manifest

- LEDGER_CORRECTIONS: the F6 rolling-sync decision map (conflict classes,
  double extractions, rename classes, protected deltas, disclosed
  dispositions, open forks Q-F6-1..3)
- v7next_domains.toml: process_interpreters replaces python_interpreter (D05);
  rows for the ten new upstream leaves by campaign family
- size_ratchet_manifest regenerated after the size-gate reshuffle
  (extension_plugin_api band row dropped at 1000)
This commit is contained in:
Ouroboros 2026-09-01 11:47:14 +00:00
parent fadb7e33dc
commit 816e7b82d7
3 changed files with 142 additions and 2 deletions

View file

@ -3429,3 +3429,130 @@ the base implementation before the fix.
weakref support) is logged, never dropped. Pins: registration exception
→ stamped; cleanup exception over a marked one → stamp preserved on
both; a setattr-refusing exception → stamped via the side-table.
## From the F6 rolling-upstream sync (upstream 8d13373b, base 5187fcdc, 2026-09-01)
One merge (`git merge 8d13373b`, merge-base b9f7597f: 121 upstream commits,
319 files, 93 overlapping) under the standing principle **upstream = semantic
truth, campaign = structural truth**. Decision map by conflict class:
- **Campaign-split monoliths** (loop.py, supervisor/events.py, tools/registry.py,
tools/control.py, tools/core.py, tools/shell.py, extension_loader.py, config.py,
llm.py, usage_accounting.py, delegate_custody.py, review_evidence.py,
review_substrate.py, supervisor/queue.py, supervisor/git_ops.py, server.py,
agent_task_pipeline.py, skill_review_status.py, subagent_dispatch_notes.py,
scope_review.py, claude_advisory_review.py): OUR facade form kept; every
upstream semantic delta re-seated in its owner leaf (retarget-to-owner).
Notable seats: DESIGN.md governance doc -> scope_review_pack +
preflight_review_prompt; EFFORT_SCALE `ultra` -> settings_scales +
llm_capability_policy + control_runtime (whole-call effort validation);
bounded prompt-token estimate -> llm_attempt + usage_accounting dataclass;
cached ledger read -> usage_legacy_import; sweep_orphaned_budget_fences ->
queue_snapshot restore seam; managed-update truthfulness (checked_at
discipline, availability recompute, `_public_repo_url` credential strip,
list_versions sha) -> git_ops_updates (+ facade re-export); custody
cursor/backfill passes -> server_maintenance; R5 delegated-custody
projection -> control_task_results; routing candidates reorder + durable
attachment carrier -> control_routing; owner_delivery live-first send family
-> control_runtime + core_artifacts; child-absorption hold + fresh-listing
prompts -> loop_delivery/loop_forced_finalization/loop_budget; quiz-answer
drain + extracted handle_finalize_now_entry -> loop_round_limits.
- **Double extractions — the upstream twin never lives**:
- `acceptance_dialogue.py` (853 L) -> folded into `loop_acceptance.py`
(REASON_* closed-set rows) and `loop_acceptance_review.py` (A-material
paid identity family: `acceptance_paid_identity`,
`bind_acceptance_paid_identity`, `_refuse_identical_acceptance`,
`acceptance_dialogue_history`, superseded-replay `_prior_acceptance_run`,
inconclusive/DEGRADED dialogue semantics in `_apply_task_acceptance_result`,
paid-cycles timing disclosure, UNHASHED history key). Importers (loop.py
re-export list, tests/test_acceptance_a_material.py) retargeted; file removed.
- `delivery_protocol.py` (170 L) -> folded into `loop_delivery.py`
(hold-control literals, RecursionError-degraded object parser,
`_parse_delivery_control_body` over `strip_protocol_fence` +
`extract_trailing_json_object`); file removed.
- `supervisor/chat_delivery_events.py` (150 L) -> folded into
`events_chat_delivery.py` (unified `_delivery_chat_id` incl. chat-0 media,
`send_links`/`send_quiz`, EVENT_HANDLERS merged as `**_CDE`); test importers
retargeted; file removed. `telemetry_events.py` has no campaign twin and
lands as-is; the campaign copy of `_handle_review_wave_budget_insufficient`
(events_budget) is retired for the typed telemetry registry, its
extraction-test pin removed with it.
- **Rename classes accepted** (same behavior, public name): `_deadline_expired`
-> `deadline_utils.deadline_expired` (tests/test_delegated_run_profile pins
moved); `_contract_valid_actors` -> `review_actor_aggregation
.contract_valid_actors` (review_verdict local copy deleted, re-export list +
extraction pin updated); `record_python_resolution`/`python_interpreter` ->
`process_interpreters.record_interpreter_resolution` + scoped
`interpreter_attestation` (registry_core save/restore replaced; node
post-gates seated as a registry_core helper under the 300-line function gate);
`_describe_returncode` -> `process_facts.describe_returncode` (shell_process
aliases it); `_write_verdict` -> `tools/patch_verdict.py` (upstream leaf
as-is, subagent_integration re-exports).
- **Protected surfaces as-is**: BIBLE.md (+P7 DESIGN.md), safety.py (chat.links,
node-runtime, escalate carve), docs/CHECKLISTS.md, gateway/contracts.py incl.
the `endpoint_index.py` extraction (campaign's scope-review-floor endpoint
removal re-applied there; upstream's `POST /api/decisions` kept), registry.py
deltas seated into the campaign leaf structure.
- **size_ratchet_manifest**: union-resolved, then regenerated twice via
`scripts/regenerate_size_ratchet.py` (band rationales recorded for
loop_acceptance_review, loop_delivery, tests/test_delegate_answer;
extension_plugin_api held at 1000 by moving the node argv policy beside its
PATH-prepend half in extension_child_catalog); `--check` green. To keep
tools/core.py under the 1600 giant gate the upstream-new link/quiz/escalate
spans live in `core_artifacts.py` (the D05 owner-chat delivery leaf) with
re-exports; `_run_shell` and the registry dispatch were shaved under the
300-line function gate via shell_process/registry_core helpers.
- **Web/VERSION**: upstream web wave, vendor assets, VERSION 6.113.5 and
package data landed as-is (node --test: 812/812).
Disclosed dispositions (contract-affecting):
- **Upstream R5 regex fallback vs the ratified D02 typed organ**: upstream kept
`_EXIT_CODE_RE`/`_SIGNAL_RE` prose harvest as a fallback for untyped records
and pinned it in tests/test_process_signal_observability. The campaign organ
(owner-ratified D02) retired prose classification: process facts flow ONLY
from typed publications (ToolResult meta + the new thread-local
`process_facts` channel, which the loop merges with whole-family precedence).
The fallback pin was REPLACED by a campaign-contract pin (untyped legacy
prose forges no process facts); stale fallback comments corrected. This
replaces a clause that would have re-opened stdout forgery of
exit_code/signal.
- **Classification deltas A.23** (tests/test_tool_classification_differential):
BROWSER_SESSION_RETIRED ok->timeout/error, BROWSER_BACKLOG_RETIRED_SESSIONS
ok->unavailable/error (upstream #440 failure prefixes, typed here as exact
identifier codes), ESCALATE_UNAVAILABLE error->unavailable (generic marker
chain). Golden regenerated by the corpus recipe at 0f715831. The `A.23`
numbering continues the existing owner-item sequence but has NOT been through
an owner batch — see open fork Q-F6-2.
- **Cost-projection doc row**: upstream's ARCHITECTURE text still describes the
deprecated `cost_usd[_with_children]` outbound aliases; the campaign's ABI 7.0
(ABI-3) removal is owner-ratified and its text was kept. No code conflict —
upstream never re-added the aliases.
- **test_v678_acceptance_state / test_owner_facing_honesty / test_loop_misc
writer inventory**: upstream counts assumed acceptance_dialogue.py; pins now
count the campaign leaves (19 writers incl. the A-material refusal;
expression-valued reasons resolved through loop_acceptance/_review/outcomes).
- **ABI 7.0 test fixtures**: upstream-new tests (routing_decision,
find_child_prefilter) wrote unstamped task-result rows, which campaign
readers QUARANTINE; fixtures now stamp `_schema_version` like real writers.
Domain map (`scripts/v7next_domains.toml`): python_interpreter.py row replaced
by process_interpreters.py (D05); new rows D04 process_facts, D05
owner_delivery, D07 delegate_registration_policy + patch_verdict, D08
telemetry_events, D09 owner_quiz, D11 endpoint_index + routing_decision +
task_decision, D17 routing_wait, D18 node_runtime.
Open fork questions for the owner:
- **Q-F6-1 (D02 vs R5 fallback)**: the regex-fallback retirement above follows
the ratified D02 organ; if the owner wants upstream's fallback-for-legacy
reading preserved on THIS branch, the typed-absence contract pin and the two
comment corrections are the exact surface to revisit.
- **Q-F6-2 (A.23 numbering)**: three approved classification deltas are recorded
under a self-assigned `A.23` owner-item id (the table validator requires the
`A.` prefix); ratify or renumber in the next owner batch.
- **Q-F6-3 (owner-stop drain monkeypatch surface)**: the FINALIZE_NOW drain now
calls the upstream-extracted `supervisor.owner_stop.handle_finalize_now_entry`
directly; `loop._mark_owner_stop_control_drained` remains re-exported but the
drain path no longer reads through the loop facade. No test relied on that
monkeypatch point; flagged in case an external harness did.

View file

@ -119,7 +119,6 @@ BAND_PATHS = {
"ouroboros/consciousness.py": "Durable Background Consciousness observation inbox and bounded truthful replay",
"ouroboros/context.py": "Entered the band from the 1501-1600 zone (1590 lines) by the v7 D03 extraction of the runtime-section fact builders into ouroboros/context_runtime_facts.py; shrink-only residue of the split, not new growth.",
"ouroboros/delegate_custody.py": "D07 DEL1 split brought the custody monolith DOWN from the 1600 hard cap into the band (1600->1305); reconcile family extracted to delegate_custody_reconcile.py, shrink-only direction",
"ouroboros/extension_plugin_api.py": "F6 upstream sync: the T14 node-runtime companion rewrite (manifest-PATH override guard + bundled-node argv substitution) landed in the registration owner; shrink-only from here",
"ouroboros/extension_process_runner.py": None,
"ouroboros/gateway/control.py": "Entered the band from 966 lines: the update-flow redesign added the shared stash-first prologue (_stash_local_work_fenced/_unwind_stashed_update) and the review-wave affordability floor to the update apply orchestration (update-flow-redesign sprint, Q9/Q10 owner decisions).",
"ouroboros/gateway/settings.py": "Retiring persistent auto-Low removed the former giant debt; the remaining owner and reviewer settings endpoints stay centralized while tracked in the shrinking band.",

View file

@ -230,6 +230,7 @@ D20 = "Presence"
"ouroboros/outcome_receipt_store.py" = "D01"
"ouroboros/outcomes.py" = "D01"
"ouroboros/owner_hurry.py" = "D09"
"ouroboros/owner_quiz.py" = "D09" # F6 sync (#Q-2b): owner quiz cards, structural expiry with the authoring task
"ouroboros/owner_mailbox.py" = "D01"
"ouroboros/packaged_cli.py" = "D18"
"ouroboros/packaged_cli_install.py" = "D18"
@ -259,7 +260,7 @@ D20 = "Presence"
"ouroboros/promotion_source.py" = "D08"
"ouroboros/protected_artifacts.py" = "D04"
"ouroboros/provider_models.py" = "D02"
"ouroboros/python_interpreter.py" = "D05"
"ouroboros/process_interpreters.py" = "D05" # F6 sync: upstream retired python_interpreter.py into this two-family (python/node) resolver
"ouroboros/reflection.py" = "D15"
"ouroboros/repo_remotes.py" = "D10"
"ouroboros/request_wire_attempt.py" = "D02"
@ -533,6 +534,19 @@ D20 = "Presence"
"supervisor/worker_process.py" = "D08"
"supervisor/worker_promotion.py" = "D08"
# F6 rolling-upstream sync (b9f7597f..8d13373b) — new upstream leaves, placed by
# their campaign families (same evidence discipline as the base map).
"ouroboros/delegate_registration_policy.py" = "D07"
"ouroboros/gateway/endpoint_index.py" = "D11"
"ouroboros/gateway/routing_decision.py" = "D11"
"ouroboros/gateway/task_decision.py" = "D11"
"ouroboros/node_runtime.py" = "D18"
"ouroboros/routing_wait.py" = "D17"
"ouroboros/tools/owner_delivery.py" = "D05"
"ouroboros/tools/patch_verdict.py" = "D07"
"ouroboros/tools/process_facts.py" = "D04"
"supervisor/telemetry_events.py" = "D08"
[classification]
# new upstream modules classified by this campaign (classification=proposed, review pending)
proposed = [