AOCI-CODE v0.1.0-rc5
Pre-release
Pre-release
AOCI-CODE v0.1.0-rc5 is built from 1bf1d28f32226298f72a351a8f6fa4e3d0242889.
- Stop treating a line-ending rewrite as a reason to stop governing a
repository.internal/volumegovernancecompared formal Volumes by raw
SHA-256, making it the one consumer in the repository that bypassed
baseline.EquivalentFingerprints— the function whose own contract declares
it the single entry point for that judgement — and therefore the one place
that ignoredline_ending_tolerance, which defaults to true.core.autocrlf
is the Git for Windows default, so an ordinary Windows checkout rewrote every
Volume and hard-blocked the Guide over a difference the team policy already
calls equivalent, while identical rewrites of business sources stayed
authorable. Such a difference is now reported as
code_volume_line_ending_only(withroot_,meta_, anddatabase_
siblings) carrying the repair, and does not block. - Refuse a
scanthat would publish a Baseline without the Volumes it governs.
Scan takes its inventory from Git, so a formal cognition asset covered by
.gitignore,.git/info/exclude, orcore.excludesFilewas silently absent
from the Baseline; the repository then failed far away on a blocked Guide that
named neither the rule nor the file. The refusal names both, and--dry-run
reports it rather than promising a scan that would fail. - Report Root and Meta drift. Nothing checked them, so a repository was aligned
according to Verify and Guide while every Scope Change refused over the same
bytes, and only one of those authorities named a file. Both now use the
vocabulary the Code and Database Volumes already use, under the same condition
a Scope Change refuses on. - Give new repositories the line-ending protection AOCI applies to itself.
initwrites a.gitattributesnormalizing text to LF, and never rewrites an
existing one. - Say when the base Go toolchain is older than
go.modrequires, instead of
reporting it as a supply-chain fault. Thelicensesand
opengauss-connectorgates pinGOTOOLCHAIN=localso the audit reports one
Go identity, and under that pin an older base install stops them — but
check-opengauss-connector.shwraps everygo mod downloadfailure into
"could not download the pinned upstream module", so a base install one patch
behind read as a compromised or unreachable upstream.make fullnow
compares the base toolchain against thegodirective first and, when it is
older, names both versions, explains why a plaingo versioncan disagree,
and offers either installing the newer Go or pointingGO_BINat one already
on the machine. The comparison is>=, so a newer base install is never
blocked. - Show the confirmation prompt before the phrase is read, not after the command
has exited. The library entry point buffers both writers into memory and
flushes them once Execute returns, so every TTY digest confirmation wrote its
prompt into a buffer and then blocked on stdin with nothing on screen. The
prompt carries the exact phrase the operator has to type, so the one thing
they needed was the one thing they could not see: they typed blind or gave up,
and the phrase appeared only alongside the failure. The prompt now goes
straight to the process stderr the confirmed branch has already proven is a
terminal. Everyscope approve,scope safety approve,baseline scope approve,cognition bootstrap, andcognition migrationconfirmation is
affected. - Let an approval land in a file instead of being carried by hand.
scope approve,scope safety approve, andbaseline scope approvetake
--out-file, so the artifactscope apply --approval-fileneeds is written
where it is wanted rather than printed to stdout for the operator to
redirect. Forgetting that redirect silently discarded a confirmation that
cannot be reused. The path is checked before the human is asked, so a bad
path never costs a confirmation; the file is created only when nothing is
already there, and is readable by its owner alone, because until the change is
applied anything that can read it can stand in for the human who typed the
phrase. - Give a Managed Scope posture relaxation the reviewer it always needed. Auto
authorization correctly refuses to let a posture ratify its own weakening, but
refusing was only half the contract:interaction_requiredwas derived from
the weaker desired mode, so desiringautoalso decided that no reviewer was
needed and the blocked change had no approver at all. Once left,autocould
not be re-entered by any governed path. A relaxation now reports
interaction_requiredand is authorized under the posture the current
Baseline receipt proves, so exactly onescope approveratifies it while
policy_bound_autostill refuses it and ordinary auto plans stay fully
automatic. - Stop counting a deleted file's stale Baseline record as a cognition coverage
reduction. A path the current Safe Inventory no longer sees has neither an
Entry nor source bytes left to lose, so retiring its record is bookkeeping;
excluded paths remain in the evaluation, so an existing source that still owes
an Entry is unaffected and keeps raising P1. Previously one such record — a
file deleted three weeks earlier — forced a pure policy change to high risk and
demanded a human approval that protected nothing. - Say what a Managed Scope confirmation actually approves. The prompt now leads
with the effects that matter — cognition Entries removed, files losing Index
coverage, a weakened posture, a relaxed budget, high-risk content admitted —
and states plainly when a change carries none of them. A confirmation phrase
binds the approval to one exact plan; it was never meant to be the only thing
the approver could read. - Index the three MCP black-box harnesses. They are executable contracts run by
name with their own preconditions, which is exactly what the admission rule
admits, and each Entry now carries the precondition a reader needs: conformance
expects an established repository and zero formal writes, scenarios writes only
disposable fixtures, and lifecycle needs Docker for the database suite while
repo-creaches aligned without drift. The earlier exclusion rested on a wrong
cost model — an Entry is about 110 tokens of FRAS, never the Python body — so
its recorded reason is corrected rather than deleted. Three Entries cost about
700 tokens against a 120k target. - Managed Scope approval mode is now
review: applying the harness change
required independent human review, because any Scope Change re-evaluates every
role and a Baseline record for a file deleted in82120dbtherefore appears as
a coverage reduction. Policy-bound auto authorization correctly refused it. - State the repository's verification obligations and its Whole-Index admission
rule inAGENTS.md, where every Agent session reads them. The gate table maps
a kind of change to the gate that actually covers it, and it records the fact
no gate output carries:clean-room-smoke,licenses,race,vuln, and
database-integrationrun only undermake full, so a greenmake fast
proves nothing about them. The admission rule states that a test earns an
Entry only when it is an executable contract run by name with its own
preconditions; ordinary package tests stayobserve, and a test that locks a
fact is recorded in the locked object'sS. A cross-layer test now fails when
any*_test.goacquires an Entry and when either rule is dropped from
AGENTS.md. - Have
aoci initadd the agent host configuration it just wrote to the
repository's.gitignore. Those files carry machine-bound absolute paths, and
a committed copy silently no-ops another machine'sinitbecause every
installer detects an existing entry by key presence. The timing is what made
this worth fixing ininitrather than in prose: Managed Scope roles are fixed
by the firstscan,scan --forcecannot advance them, and removing a path
afterwards is a coverage reduction that needs an approved Scope Change — so a
defaultinitthenscanused to leave a machine-bound file as a permanent
authoring target.initappends under its own marked block, never rewrites
maintainer content, skips any path Git already tracks, and does nothing when no
host configuration was written. - Split the one-step setup instruction in both public READMEs into the two turns
it always was. The index is authored through AOCI's MCP tools, and the server
initwrites is not loaded in the session that wrote it, so the old single
prompt asked the Agent to finish work it could not reach. The first
instruction now runsinitandscan, asks for any configuration a host does
not write itself, and stops with an explicit restart hand-off; the second
confirms the MCP server and builds the index.scan, which establishes the
Baseline every later step needs, was missing from the one-step path entirely. - Say in both READMEs how to tell which AOCI a host is actually connected to:
cognition_receipt.mcp_service_versionandruntime_repository_rootfrom any
Overviewcheck_onlyresponse or any Maintain response, and thecommandin
the project's.mcp.jsonor the equivalent host configuration for the binary
path. Replacing bytes on disk does not change a running MCP process. - Carry the
aoci scope acknowledgeremediation in a blocked Volumes Guide whose
Observe evidence is pending review.observe_change_policydefaults to
review_required, so an ordinary edit to any Observe-role file blocks
authoring; the Legacy Plan already routed that state to acknowledgement, while
the Volumes Guide reported a bareobserved_pendingfinding with no command.
The response now adds the scope status and acknowledge commands, an
observed_pendingstop with cause and safe next action, and the instruction to
review the reported evidence before acknowledging. - Show the index header both public READMEs previously only described: the Root
manifest that declares each participating Volume with its kind, path, format,
dependency, and activation state, and the Meta header that carries the object
protocol, the FRAS discipline, the machine limits authority, S admission, and
the S quota. Each locale quotes what its ownaoci initwrites, and a
cross-layer test binds every quoted line to the rendered template and the
machine S quota, so a template or limits change cannot leave the published
example describing a header the binary no longer produces. - Correct published facts in the release-facing READMEs: the status badge named
the supersededv0.1.0-rc3, the black-box suites were advertised as 44
conformance checks, 22 fault-injection scenarios, and two lifecycle fixtures
when they are 46, 30, and three, the English documentation map linked the
Chinese Windows host-agent original instead of its English rendering, and the
one worked FRAS example separatedAitems with semicolons where the public
contract and every shipped Entry use commas. - Make the conformance check count a property of the suite rather than of the
repository it is pointed at. The Overview chain is tallied as two aggregate
checks instead of two per chunk, and the probe pair is graded unconditionally,
so the published number no longer moves when an index crosses a chunk boundary
or a probe is not issued, andAOCI_REPOruns against a foreign target no
longer look for this repository's documents. - Carry the issue #8
aoci cognition bootstrapcorrection into the Chinese
README, which had kept the pre-fix wording: bootstrap never targets an
initialized Volumes v1 repository, and a Volumes skeleton with zero Entries is
established throughaoci scan, then Guide and no-argumentaoci_maintain. - Make the black-box suites enforce their own published numbers. Conformance and
scenarios now fail when the count printed by the run disagrees with any
document that advertises it, and the lifecycle suite fails when a committed
fixture is not named where the suites are advertised, so these counts cannot
drift silently again.
The first public availability date for v0.1.0-rc5 is 2026-08-17.
See docs/install.md and docs/supply-chain.md for asset verification.