Commit graph

6 commits

Author SHA1 Message Date
Ouroboros
49c66060ee Acceptance binds the latest plan revision; the plan record reaches context, health, reflection, the web panel and the operator script
review_evidence_sections._accept_effective_claims is one binder: ingress claims
win and the adopted promises stay visible in the exhibit; otherwise the LATEST
revision's done_when binds acceptance, open objections or not; a task with only a
v1/v2 record binds what the old organ selected (its closed wave or an Advisory
author selection) with legacy provenance. The plan-history exhibit carries the
actual text of every revision's done_when, which revisions the council saw and
the objections open now. An unreadable plan record reaches acceptance's existing
infrastructure-failure path.

Readers: the task context projects the plan record beside the legacy authority;
context health names the asks still awaiting answers; the reflection slice
projects revisions, asks, objections and contributions; startup checks read the
record; the Review block's plan surface sentence names the asked participants;
the source closure and child-ref promotion follow the record's retained texts.
The web Reviews panel renders the record (web/modules/plan_record_presentation.js:
revisions with done_when, asks with participants and contributions, open
objections, awaited answers) and keeps the read-only branches for v1/v2 records.
scripts/run_plan_review.py drives the new form (one revision + one ask, --dry-run
assembles every participant's delivery and dispatches nothing). Inventories regenerated.
2026-10-15 01:46:03 +03:00
Ouroboros
82de26a2fd Resolve only declared file targets as the plan's constitutional fact
`plan_spec.resolve_constitutional` read every non-URL string in the spec's
`affected_resources` list as a file path. On the live install that turned the
prose item «Отдельный проект «TSMC — 10-летний инвестиционный анализ»» into "a
path under the Ouroboros repository": the plan was marked constitutional and
every reviewer of a deck-shaped plan received BIBLE.md plus ARCHITECTURE.md in
full, ~470k tokens per cycle. Across the recorded history not one of the 14
constitutional verdicts came from a real file path in that list, and the model
never once spelled a target as `file://` (0 of 186 locators).

The spec now says the two things separately (owner decisions 8=A, 9=A, 16=A):

* `affected_paths` — REQUIRED — is the files the work will CHANGE, and the only
  list the host resolves. `[]` is a real claim: "this work changes no files". A
  path under the system repository decides whether or not the file exists yet,
  because creating `ouroboros/new_module.py` IS self-modification.
* `affected_resources` is prose: systems, services, projects, people. Nothing in
  it reaches the filesystem.
* An `evidence` locator is something to LOOK AT. Reading a repository file is not
  changing it, so it no longer buys the pack on its own (16=A); when the work
  will also change that file, the file is in `affected_paths` and decides there.
  System-repo evidence reads are named in the disclosure note, so an author who
  expected the constitution can see why it did not come. Existence stopped
  deciding anything, so `_default_exists`/`evidence_exists` are gone with it.

A NEW spec submitted in the old mixed form is refused before any dispatch with
`PLAN_RESOURCE_FORM_REQUIRED`, quoting the field with a two-line example. The
refusal deliberately does NOT carry the `PLAN_SPEC_INVALID` token: that family
records a superseding attempt on the way out and would orphan an open wave, so
this one writes nothing and, when a wave is open, names its fingerprint and the
free `review_disposition` exit. Waves recorded under the old shape keep their
identity: `affected_paths` is never defaulted onto stored input, so their
`spec_hash` and `plan_fingerprint` are byte-identical (pinned against the three
live examples) and they still close at $0. `spec_delta` reports the appearance of
the key itself, because "stored before the field existed" and "changes no files"
are different claims.

No grace mechanism for the 31 open waves — already disclosed to the owner.

Co-authored-by: Ouroboros <311266734+ouroboros-agent@users.noreply.github.com>
2026-09-15 17:08:58 +03:00
Anton Razzhigaev
d6210b1a05 plan review becomes a domain-neutral spec gate
The pre-implementation gate reviewed an unbounded prose plan with a ~100k-token
governance pack, planning-scout subagents and an Atlas, and every rewritten plan
minted a fresh fingerprint that bought a whole new paid wave from cold reviewers.
Convergence was structurally impossible: the reviewer was asked to author a
competing plan every wave, REVISE_PLAN could not be dispositioned, and nothing
capped the cycles.

plan_task now reviews an INTENTION — the same organ whether the work is code,
research, a deliverable or an action in the world:

- a typed domain-neutral SPEC (goal, in_scope, non_goals, acceptance_claims,
  invariants, decisions with rejected alternatives, deferred, affected_resources,
  evidence) with host-minted ids that are the only valid `breaks` targets;
- ONE structural fact tiers the governance pack: `constitutional` iff a declared
  target resolves under the system repo (never prose, never a plan-kind taxonomy);
- agent-declared evidence, bounded, with EVERY absence named, the runtime data
  plane denied outright, and the exploration log redacted through the same SSOT
  task acceptance uses;
- typed findings (blocking with a `breaks` id | note | need_evidence) with the
  HOST computing the aggregate through adaptive_quorum — no reviewer emits GREEN
  as authority, none writes a competing plan;
- ONE owner setting OUROBOROS_REVIEW_MAX_CYCLES (default 2, unlimited available)
  bounds paid cycles for plan review, task acceptance (passes = cycles - 1) and
  the commit gate's identical-diff attempt cap; an identical envelope replays for
  free and a DEGRADED wave costs nothing;
- under blocking, an open plan holds implementation and a spent cap escalates
  with a typed review_cycles_exhausted reason and an honest blocked terminal;
  under advisory the agent may proceed with the wave open and a loud disclosure.

Deleted: planning scouts, the plan Atlas, plan_class, context_level, the
governance mega-pack, the generative reviewer stance, the hidden 32-wave limit
and the api_chat-only pin. Net effect on the tree is negative.

Co-authored-by: Ouroboros <311266734+ouroboros-agent@users.noreply.github.com>
2026-08-17 11:37:32 +00:00
Anton Razzhigaev
c8d9464923 release: ship Ouroboros 6.65.0 planning and delivery reliability
Operator phase 1 of the approved 6.65-6.67 train; VERSION intentionally advances ahead of the latest tag until the final phase tag.
2026-07-16 00:04:29 +00:00
Anton Razzhigaev
6a357d338d release: v6.64.0 2026-07-14 18:55:54 +00:00
Ouroboros
ffa6f48aec release: Ouroboros v6.43.0 Phase 1 updater and skill trust fixes 2026-06-24 06:22:31 +03:00