Skip to content

Verifier 2.0.0: The grounded certification release - #53

Open
TimeLordRaps wants to merge 80 commits into
mainfrom
codex/verifier-2-unified-release
Open

TimeLordRaps wants to merge 80 commits into
mainfrom
codex/verifier-2-unified-release

Conversation

@TimeLordRaps

@TimeLordRaps TimeLordRaps commented Sep 19, 2026 •

Copy link
Copy Markdown
Owner

Verifier 2.0.0 development checkpoint

Coordinate

Current signed head: b74a1839b4bee60f8d784baf846b553c43c8c209

  • The signed candidate is prepared for PR 53; hosted results below remain PENDING.
  • Live main observed for this review: f06414feec801c8b44a662d583ddff817ce22a1b. The PR API's base snapshot was fc2a20c68d01920eda7e4e1bf14dfbcb334a7634; hosted integration coordinates must be observed separately.
  • Scope: root package GRAPH, numeric Polish tiers 0–3, sole authored reasons.vstd, compiled objects.vstd, and Pull Request Domain Explanation Language (PRDEL) native v2 development support.

Change and evidence

The package can select the root registry, reconcile authored reasons with its selected obligations, and assess the represented graph through VERIFIER objects. This integrates the current namespace, tier, graph, execution and self-polish work in one tree. PRDEL v2 now supports bounded larger snapshots and records large changed artifacts by exact digest rather than embedding their full bytes. This is an unreleased development checkpoint, not a release or a claim of whole-package conformance.

The candidate is prepared for push; the published head remains the previously observed PR head until the push succeeds. Candidate-specific statements below describe the proposed tree only. Each assessment must bind its actual source, registry and execution coordinate; native specimen diagnostics do not substitute for package-instance evidence.

The last complete local Polish 3 report (r627) predated the final boundary-literal and registry refresh changes. At that earlier coordinate, Tier 0 passed; Tier 1 had 32,333/32,333, Tier 2 60,944/60,944 and Tier 3 86,749/86,749 instance results passing, with the self-polish system passing at each tier. Overall status remained UNKNOWN due to normative coverage and higher-tier refinement. These are historical results, not a verdict for the proposed commit.

The later r630 run reconciled 86,749 selected obligations to the sole authored reasons input with zero missing reasons, and refreshed objects.vstd to SHA-256 57c98bb23a4545be0603e93d0f000369fc37496195bfe699a317167315c16512. Its assessment stopped with PACKAGE_ASSESSMENT_UNAVAILABLE, PACKAGE_CLOSING_RECAPTURE_UNAVAILABLE, PACKAGE_NATIVE_DIAGNOSTICS_NOT_RUN and PACKAGE_REPORT_CAPACITY_EXHAUSTED. Its denominator was NOT_RETAINED; current tier and whole-package outcomes remain UNKNOWN. The machine had low virtual-memory headroom, but the precise failing resource has not been independently established.

Available PRDEL-family tests recorded 494 passed; four CLI overlay cases were not run because their retained fixture root was unavailable. Boundary-literal focused tests recorded 262 passed and 17 skipped; individual skip classifications and exact installed-source bindings for that run remain to be established. The earlier candidate passed its public boundary scan; the current worktree passed presentation and git diff --check. Final outgoing history and hosted checks require separate validation. Full regression, hosted/platform coverage and release qualification are not established.

PRDEL v2 automatic compilation is unsupported. Manual-template generation for the identical tree at the earlier local commit returned SOURCE_UNAVAILABLE (unavailable source or an exceeded declared bound); the host-selected release subject remains UNKNOWN. No PRDEL clearance is claimed.

The LF-aligned pre-commit working tree refreshed the registry to SHA-256 4ae35e800c92b300dd31b48bfd3dd5d3c4e3790f2d6ab5607abe397d59aff465. Its Tier 0 assessment returned UNKNOWN: documentation metadata has an unclosed ACTUATOR non-applicability boundary, and vstd-architecture:EVENT remains unresolved. A source coordinate changes upon commit, so these observations are not a verdict for the signed head. The refresh regression selection passed 104 tests with one Windows symlink-privilege skip; the source and asset selection passed 23 tests. A separate selection had 168 passes and one detached-branch GitHub CLI failure. Hosted validation is pending.

The latest pre-commit Tier 0 assessment returned eight obligations PASS and one UNKNOWN. Its findings are an unclosed documentation ACTUATOR non-applicability boundary and an unclosed vstd-package-graph:ARCH source boundary. The identity AGENT and EVENT classifications now retain their authored obligations across the open evaluation boundary; this does not claim an agent or event occurred. The pre-commit assessment does not establish a verdict at the signed commit, and Tier 1 and above remain NOT_ESTABLISHED. Hosted checks on the previous head still failed for runtime-bound native specimens and cross-platform comparison; this candidate has not yet been evaluated by hosted CI.

Promotion record

  • Final head commit: b74a1839b4bee60f8d784baf846b553c43c8c209 — PENDING push and hosted observation.
  • Final base commit: PENDING — bind the actual hosted integration coordinate.
  • Executed integration commit: PENDING — no separate integration run claimed.
  • Repository-check event: pull_request
  • Repository-check run: 40661915878
  • Promotion record SHA-256: PENDING — canonical complete record unavailable.
  • Actionable findings: PENDING — PRDEL source/bounds, current Polish admission and all hosted findings remain open.
  • Tests skipped or not run: PENDING — hosted machine-produced evidence and local skip classification are incomplete.
  • Human acceptance evidence: PENDING — no trusted acceptance is claimed.
  • Post-merge validation owner and surfaces: PENDING — main and Pages require an assigned owner and observed coordinates.

Source and domain inventory

The tracked inventory is 2049 files. The retained executable catalog declares 12 domain adapters and 57 domain checks, plus six accountable-domain adapters. Selected executable coordinates: ACTOR.1-ACTOR.4; AGENT.1-AGENT.5; BENCH.1-BENCH.4; BOT.1-BOT.5; COLLECTIVE.1-COLLECTIVE.2; DATA.1-DATA.5; ENV.1-ENV.4; HARDWARE.1-HARDWARE.4; HARNESS.1-HARNESS.5; HUMAN.1-HUMAN.3; IDENTITY.1-IDENTITY.3; MODEL.1-MODEL.5; OWNER.1-OWNER.4; ROLE.1-ROLE.2; SIM.1-SIM.5; TOKEN.1-TOKEN.5; TRAIN.1-TRAIN.5; VERIFIER.1-VERIFIER.5. This is an adapter inventory, not the complete object namespace or a conformance result.

The extensible namespace includes the 26 retained kinds HUMAN, ACTOR, COLLECTIVE, ROLE, IDENTITY, OWNER, HARDWARE, RECEIPT, OBJECT, GRAPH, SPACE, TIME, EVENT, ENV, DATA, VERIFIER, BENCH, ARCH, TRAIN, HYPER, MODEL, HARNESS, AGENT, SIM, BOT and TOKEN, plus 12 accumulating consequential kinds: LEDGER, TRANSACTION, ASSET, MARKET, MEASUREMENT, SENSOR, CONTROLLER, ACTUATOR, PROTOCOL, POLICY, ROBOT and FINBOT. LEDGER, TRANSACTION, ASSET, MARKET and FINBOT include financial-relevant obligations; selected finite routes do not establish real-money authority, settlement, physical effects or full financial-object conformance. The pre-commit registry records applicability of these kinds on selected objects, but ASSET, MARKET and FINBOT have no primary-kind objects there. Registry declarations, native specimens and source coverage do not establish that every object or tier passes; current package admission and financial coverage remain UNKNOWN.

Selected retained financial checks include MARKET-1.1-order-access-lifecycle, MARKET-2.1-matching-pricing-allocation, MARKET-3.1-settlement-failure-disruption, FINBOT-1.1-agent-harness-and-financial-authority, FINBOT-2.1-real-financial-endpoint-and-exposure and FINBOT-3.1-decision-effect-retry-intervention-and-reconciliation. These replay bounded supplied records; they do not establish complete coverage, live trading, real authority or settlement.

The source rows bind changed files and definitions to exact bytes and provide behavioral summaries and limits. The single supplemental catalog row avoids a circular digest and is subject to the same exact-coverage check.

{"base":"f06414feec801c8b44a662d583ddff817ce22a1b","target":"b74a1839b4bee60f8d784baf846b553c43c8c209","manifest":{"path":"docs/PR_SOURCE_FEATURES.json","sha256":"bf7d1dda20742eae08c596d8c98aa8725c8b51f24470368e5ba1745d02e7d669"},"supplemental_files":[{"path":"src/verifier/runtime/package_original_kind_catalog_repository_assets.py","sha256":"e6906caf2099edbab5d130a585e29637d1c0aa5d96c519f4c402d8e3fda72bde","symbols":["RepositoryAssetOriginalKindAudit","RepositoryAssetOriginalKindQuestion","_canonical_digest","_catalog_check","_effect_blocker_reproduces","_import_targets","_is_negated","_owned_path","_question","_read_owned","_reason","_record","_source_coordinate_digest","_spec_text","current_source_partition","owned_content_digest","owned_screen_digest","owned_source_closure","owned_source_hits","review_document","validate_source_partition"],"summary":"Binds the repository-asset ownership partition to exact owned bytes and records explicit original-kind applicability decisions and unresolved questions.","limits":"A lexical source screen and partial profile do not establish admission, full package closure or semantic truth."}]}

Human review gates

  • Review the represented package graph, sole reason authority, applicability and instance evidence.
  • Resolve the current UNKNOWNs and bind fresh hosted evidence and trusted human acceptance to the final head.

Test skip rubric disclosure

Hosted skip inventory is PENDING. The four retained-fixture PRDEL cases and the 17 skips in the focused boundary-literal run remain unclassified pending exact per-test reasons; no zero-skip claim is made.

Consequences

The registry and report schemas, package selection and native-v2 development route change. Existing profiles and wire identifiers retain their own compatibility boundaries; this checkpoint does not authorize release or deployment. TIME contradictions and meta-tier 4 closure remain open.

DO NOT REMOVE — governing v2.0.0 hierarchy and meta-tier requirements

This section preserves the maintainer's requested release scope. It is a requirement, not a declaration that the current implementation completes it. The successful checks recorded elsewhere in this description cover the existing candidate; completion of this expanded hierarchy must be established separately, requirement by requirement.

For every namespace object and every domain object, meta-tier 1 covers fundamental facets of its structure; 2 covers dynamics of those facets; 3 covers static external constraints and invariants; 4 covers closure certificates; 5 covers independence; 6 covers privacy; 7 covers consent; and 8 covers governance. Computational objects require computationally grounded certifications where achievable. Accountability objects require accountability contracts under the same eight general meta-tiers. Unsupported or ungrounded claims remain UNKNOWN.

The maintainer explicitly named 25 objects below. The already supported TOKEN object is retained rather than silently removed, yielding a 26-object release census after replacing the object name VSTD with RECEIPT. Verifier Standard (VSTD) remains the standard's name. Existing released bytes and identifiers require explicit migration treatment; the rename must not create ambiguous current object names or silently reinterpret historical receipts.

The following is the maintainer's supplied hierarchy and notation, retained verbatim as the scope anchor:

HUMAN (computational object representation of an identified human, uses timelordraps/identifier generally, but is expressible agnostically so that other identifier-likes can still be formed around the verifier-standard)
ACTOR (Decision maker, all ACTORs must have a root HUMAN who is generally responsible for the actions of all downstream non-human ACTORs and ACTOR can be a HUMAN or AGENT or BOT, HUMAN and AGENT are both open ended, BOT is sim-constrained)
COLLECTIVE (Collection of ROLE)
ROLE (Representation of abstract roles within a COLLECTIVE)
IDENTITY (An ACTOR who needs an instantized representation of a ROLE so that they can be identified as that role and identified as the type of ACTOR they are)
OWNER (Relational object where an ACTOR can be an OWNER of some other OBJECT, like an ACTOR has-an IDENTITY, so they are an OWNER of that IDENTITY, an ACTOR can also be an OWNER of HARDWARE, but only if they are a HUMAN actor, AGENTS cannot own HARDWARE in verifier, this prevents resource acquisition problems downstream, A BOT can only own virtual HARDWARE ie virtual HARDWARE running in a SIM, I think we need a way for virtualized things (stuff purely inside of an isolated SIM, which means we also need a formal definition of what isolation within a SIM means)
HARDWARE (Computational object representation of a physical hardware unit including sensors, memory, storage, processing, can be as highly specific as to drill down to instruction sets, or even circuit representations)
VSTD/RECEIPT (Basic computational artifact receipt X ran on HARDWARE) maybe we rename this to RECEIPT to be more clear, I think thats the smart thing to do, this will require absolute coverage so other agents dont accidentally pick up on old references and we balloon technical debt with mutliple names for the same thing).
OBJECT (NOTE NEW: I think we need a base object class, an object is something that can have a receipt written about it, should still follow the meta-tiers of 1. facets of the structure [this will feel incredibly meta to define], 2. dynamics of those facets (with no specification of what domain the facets of 1 are supposed to represent these are closer to meta-dynamics), 3. statics of the external constraints/invariants (will likely be very meta-invariant representational, think invariants which form invariants about the lower level objects they represent for this one. 4. closure (how can we generally close around proving something can have a receipt written about it generally and basically abstractly) 5. independence (what does it mean for a computational object to be indepednent of other objects, separate features, different categories, novel introduced facets, etc) 6. privacy (what would it look like if an object could be entirely private, probably useful to think through encryption, compression, blockchain meta-fundamentals) 7. consent (what does an object represented computationally have in forms of consent against and with what other computational objects, very meta-consensual, where meta-consent is the acceptance of existing inside a system where consent is defined by a hyper-consensual authority, the dev.) 8. governance (a representation of what laws this object follows, does this object have external worldly laws currently existing around its existence, if not, are there any lawful/ruley/ethical/moral boundaries that this object exists within)
GRAPH (for connecting multiple artifacts into a graph structure)
SPACE (computational representations of space)
TIME (computational representations of time)
EVENT (computational representation of an event represented as a TIME + SPACE + meaning object)
ENV (representation of the computational environment, OS, packages, etc)
DATA (input and output data specifications of data into and out of a computational object)
VERIFIER (verifier like object that is used to determine oracle satisfactions of statements that represent clauses and variables or values and transformations like solvers, or theorems and proofs like provers, or programs and certificates certifiers, or source code and runnables compilers, or ...)
BENCH (VERIFIER + DATA where the BENCH Object on top represents the meaning behind what the DATA being VERIFIED against some objective (like testing a neural network)
ARCH (NOTE NEW Im adding this new one, it should represent a computational model, could be a neural network, or simply a rl equation set)
TRAIN (DATA + EVENTs + BENCH[evaluation] + ARCH)
HYPER (compositional relational object like MODEL = HYPER(TRAIN, DATA, EVENTs, BENCH, ARCH, ENV, HARDWARE, EVENTS)
MODEL (see above, but this higher order should represent the model as an abstract white boxed black box, where the represented black box model(what this VSTD-NAMESPACE object serves out to higher order objects) is mapped from the underlying white box model (The HYPER(...))
HARNESS (represents an open ended system that allows a MODEL to interact with some external facing facets, does not include a MODEL in its definition, because a HARNESS is external and separate from the MODEL entirely)
AGENT (it has a MODEL(with its own ENV where it was TRAINed), and an ENV of where the HARNESS would be functioning), works like HYPER(MODEL, HARNESS, ENV) or HYPER(MODEL, HARNESS, GRAPH(ENV)). I think GRAPH(X) is a general abstraction where like how ENV is replacable with GRAPH(ENV) this behavior of GRAPH replacement is generally applicable across our domain model)
SIM (simulation of some phenomena that has variables which represent objects inside of the SIM which transition through states, I dont think a static SIM makes any sense, ie a single state, that is closer to a RECEIPT to me, well I suppose a single state of a SIM would still be VERIFIER ready to be verified, hmmm idk think deeper on this single state SIM vs multi-state exclusivity, I see no reason not to allow static SIM representations, but basically some state that is representable as variable objects which interact together and are verified by the SIM, a SIM is a HYPER(DATA, VERIFIER, OBJECTs, ENV, GRAPH(GRAPH(GRAPH...)))) a SIM outputs RECEIPTs by definition, it can also output OBJECTs which themselves have RECEIPTs of creation.
BOT (HYPER(AGENT, SIM, ENV))

This is the most comprehensive description of the entire system I have provided to a single agent please operate on this autonomously until the pr#53 reflects all of these each with -1..8.ms
So literally 8 tiers x 26(I think I counted real quick) objects x number of modules per tier looking like close to 1000 different individual modules to define. Also I read something like SIM-3.6 as the 6th objective within the static(3) tier of a SIM object, and I state the layer like SIM-3.m's when talking about all of the modules within the static(3) tier, and when talking about a meta-tier specifically I say -X.m's where X would be meta-tier level.

Current notation supersedes the historical shorthand in the retained quote: use [OBJECT]-1..8.m's for the objectives within the eight positive meta-tiers. For example, SIM-3.6 is the sixth objective/internal grounding certificate inside SIM meta-tier 3. The minus-shaped separator is not a negative tier; .m is an objective index, not dependency depth or an adapter count. The historical .ms spelling does not govern current code or documentation.

Implementation audit gates: every object has explicit applicable -1..8.m obligations; every certification or accountability contract has its exact bound proposition, mechanism, evidence, assumptions, exclusions, falsifier and PASS/FAIL/UNKNOWN behavior; composition binds actual operands and supports typed GRAPH replacement; isolated simulation boundaries and physical-versus-virtual hardware ownership are enforced; every module identifier denotes its individual objective rather than a count or dependency depth. A catalogue row, digest, self-assertion or passing unrelated test is insufficient. No fixed total near 1,000 modules is fabricated from the maintainer's estimate.

The later distinct SECURITY requirement is tier 9. The preserved eight-tier maintainer quotation is historical scope evidence; it has not been edited to claim completed nine-tier qualification.

…im Garden transmission

- Implement publish_claim() with fail-closed preflight validation in src/verifier/interoperability/claim_garden.py
  * Verdict check: overall receipt verdict must be VERIFIED
  * Statement count check: evaluated statement count must be > 0
  * Claim digest check: SHA-256 over canonical JSON must match receipt claim_digest
  * Receipt canonical digest check: stable receipt hash must match declared canonical_digest
  * Notary binding check: verifies signature presence if notary_binding declared
- Add vstd publish CLI subcommand in src/verifier/runtime/public_cli.py
- Add docs/tutorials/PUBLISH_A_CLAIM.md tutorial guide
- Update reference.html, guides.html, FIRST_RECEIPT.md, and QUICKSTART.md
- Add comprehensive test suite in tests/test_claim_garden_publish.py (11 tests, 100% pass)
@TimeLordRaps
TimeLordRaps marked this pull request as ready for review September 19, 2026 23:09
@TimeLordRaps TimeLordRaps changed the title Prepare Verifier Standard 2.0.0 with publish command and monograph Verifier 2.0.0: The grounded certification release Sep 19, 2026
@TimeLordRaps
TimeLordRaps marked this pull request as draft September 20, 2026 00:16
@TimeLordRaps
TimeLordRaps marked this pull request as ready for review September 20, 2026 00:22
TimeLordRaps and others added 15 commits September 20, 2026 16:31
The domain catalog synthesized one linear prerequisite chain for every
domain:

    "depends_on": [] if i == 1 else [f"{domain}.{i-1}"]

Only HYPER is genuinely linear. The other five fan out from a shared
prologue, so the chain asserted edges that the checkers do not have. A
check whose own evidence fully passed was then reported established:
false because an unrelated sibling returned UNKNOWN, and the certificate
contradicted itself:

    SIM.3  UNKNOWN  established=False   (projection absent)
    SIM.4  PASS     established=False   <- wrong
    SIM.5  PASS     established=False   <- wrong

Each CHECKS entry now carries the exact set of lower checks its own
evaluation re-executes or presupposes, read off the control flow of each
evaluate(): SIM fans out entirely from SIM.1; DATA.5 re-runs DATA.4;
BENCH.3 re-runs BENCH.2 while BENCH.4 does not; MODEL.5 needs the network
but not the evaluation; HYPER stays a strict chain.

Establishment now follows the declared graph and reports blocked_by,
matching the semantics core/grounded_certification.py already uses for
profile obligations. domain_depth is unchanged: it remains the
consecutive established prefix, so existing consumers are unaffected.

ENV.4 -> ENV.2 is the one edge not mechanically implied by control flow.
ENV.4 hashes artifact["configuration"] without re-running ENV.2, but its
comparison is vacuous unless ENV.2 established that the declared
configuration is the observed one.

Adds blocked_by to the domain certification schema, mirroring the
grounded certification schema, and two regression tests. The first fails
against the previous behaviour with [True, False, False] != [True, True,
True], so it discriminates on establishment semantics rather than on the
presence of the new field.

Full suite: 2816 passed, 39 skipped.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The runtime was usable but not approachable. Every documented command already
exited 0, so this is not a correctness fix; the gap was that nothing told a
newcomer what to run first, and a stored result reported an outcome without
saying why it came out that way or what to do about it. That gap falls hardest
on the three audiences 2.0.0 is meant to serve: a person reading a certificate,
an assistant reading the same file, and the two working together.

  vstd start    prints an ordered, copy-pasteable path from an installed
                package to a checked result, with the reason for each step and
                the four terms most often misread. It runs nothing and writes
                nothing.

  vstd explain  restates a stored receipt or certificate in plain language:
                per-coordinate outcome, whether it is established, what blocks
                it by coordinate, the checker's own reason, and one next action
                phrased for the actual obstacle. A refutation and a missing
                input get opposite advice, because supplying more evidence
                cannot clear a FAIL.

Both render prose or --json from one computed structure, so a person and an
assistant reading the same artifact are never told different things. That
extends to the exit status: explain exits on the stored verdict under the usual
PASS 0 / FAIL 1 / UNKNOWN 2 convention, so `vstd explain cert.json && deploy`
cannot read success out of a certificate whose printed status is FAIL. A
document carrying no verdict has nothing to propagate and reports a successful
read. Neither command evaluates evidence, admits a mechanism, or changes a
verdict; explain never upgrades UNKNOWN. Also: python -m verifier works,
--version reports the installed version, and the root help ends with a pointer
to both commands.

A run receipt gets a first-class explanation rather than a restatement of its
schema. It is the artifact the guided path produces at step four and explains
at step six, so it was simultaneously the highest-traffic case and the least
informative one, reporting only that the file declared schema VSTD-1. It now
reports the claim, the observed run and exit code, what was digested, the
receipt's own declared limitations, and the difference between a declared
reproducibility ceiling and a demonstrated level -- the receipt-level
counterpart of reading depth as a count of established checks. A receipt
carries no verdict and the explanation says so instead of implying one.

explain states the two counts that are easiest to confuse. For a domain
certificate with an interior gap it reports "4 of 5 SIM checks established;
depth 2" and explains that depth counts only the unbroken run from the first
check. For a grounded certificate it reports "1 of 7 obligations established;
0 profiles complete", keeping certified_profile_depth -- a count of whole
profiles -- distinct from a count of established obligations.

Fix a real defect found while measuring this: examples/grounded_certification.py
printed a hardcoded result sentence and returned 0 regardless of the computed
status, so the shipped partial-certification example exited success on an
UNKNOWN result, contradicting its own guide and the PASS/FAIL/UNKNOWN = 0/1/2
convention used everywhere else. It now reports the observed result and exits
on that convention.

Two of the 20 new tests are load-bearing against drift: every command that
vstd start recommends is parsed by the real parser, so the guided path cannot
rot as subcommands change; and explain is asserted to reproduce each stored
outcome and established flag exactly, so the plain-language layer cannot
silently disagree with the certificate it describes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
… verbs

The existing guard parses every command `vstd start` recommends, which catches
a renamed or removed subcommand. It does not catch a stale argument: `vstd plan
examples/generic_run/manifest.json` parses identically whether or not that
manifest is still there, so moving the example would leave the guided path
recommending a command that fails on the first thing a newcomer runs.

Assert that every shipped repository path a step names still exists. Paths a
previous step produces are excluded, since they are absent by construction
before the walkthrough starts.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
`vstd start` printed its guide pointers and follow-on command from the
printing function rather than from `start_report()`, so a `--json` reader
never received them. The surface claims a person and an assistant reading it
are told the same thing; this was the one place that was untrue.

The pointers move into the report as `guides` and `next`, the printer reads
them from there, and a new test asserts the printed output names no document
the structure does not carry. The existing path-existence guard now covers the
guide paths too, so the footer cannot rot the way a step argument could.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A bare `vstd` is the first thing most people type, and argparse answered it
with a usage error on stderr that listed all twenty-two subcommands and named
none of them as the place to begin. It now prints the help, whose epilog
points at `vstd start`. The exit code stays 2: no command was given.

`vstd validate` takes the receipt directory and `vstd explain` took only the
JSON file inside it, so two adjacent steps of the guided path disagreed about
the same argument. `explain` now accepts either.

`explain` exited 1 on a file it could not parse but 0 on a file it parsed and
did not recognise, though both are the same mistake: the wrong file. An
unrecognised document now exits 1, so `vstd explain notes.json && ...` cannot
proceed on something the runtime never recognised. A recognised artifact that
simply carries no verdict, such as a run receipt, still exits 0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
HARNESS certifies an instrumented observation surface: every channel is
declared and dispositioned instrumented or declared-gap, so a gap is named
rather than absent. Retained records are contiguous and payload-digest bound;
tool invocations must bind a registered declaration and a retained tool record;
the transcript check compares both the canonical digest and the digest-tree
commitment, so an omitted record cannot silently shorten the transcript.

AGENT certifies a trajectory against exactly one bound harness certificate,
re-derived from its retained bytes under the same mechanism digest. The
harness's instrumented channels are the agent's observation ceiling. Steps,
actions and claim supports must resolve to records inside it; a claim naming a
channel outside it is UNKNOWN, never reconstructed. An agent certificate
cannot establish more than its harness declared observable.

Adding two adapters changes the monolithic implementation digest, so every
domain policy must readmit the checker. 2.0.0 is unreleased and no published
certificate is bound to the six-adapter digest, so the cost is confined to the
branch.

Domain depth remains separate from object and Graph numbered-profile
conformance; both certificates retain object_profile_conformance as
NOT_ESTABLISHED.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…escribes

A description is the artifact a reviewer reads instead of the tree. Nothing checked
that it still matched. `check_pr_policy.py` checks that the promotion record is
complete and accepted; whether the described technical inventory is still true was
left to discipline, and discipline does not survive a rebase.

`scripts/check_pr_description.py` reads the executable domain catalogue as the source
of truth and requires the description to agree with it: every domain named with its
exact coordinate range, the domain and check totals equal to the catalogue's, the
signed head equal to the head under review, and the tracked file inventory equal to
the tree's. Every mismatch is a failure rather than a warning, because a description
that silently stopped matching the tree is a claim without evidence.

The concrete case it is built for: adding a domain adapter moves the catalogue from
six domains and 28 checks, so a description left alone now fails rather than quietly
describing a system that no longer exists.

Wired into `scripts/preflight.py` before push and into the repository checks on
pull-request events, where `--head` binds the pull-request head because the job runs
on a merge ref. Passing when no description can be read is deliberate: absence of a
description is not evidence that it disagrees.

`tests/test_pr_description_gate.py` (11 tests) discriminates on the mismatches rather
than on the presence of the check: nine assert it fails on an undescribed new domain,
a stale domain count, a stale check total, a narrowed coordinate range, a stale or
missing head, a stale file inventory, and a module the catalogue never declares.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The promotion workflow reads the repository-check run with a digits-only
expression anchored to its own line. Qualifying prose appended to that line
does not degrade gracefully: extraction returns nothing, the step exits on the
empty value, and the failure surfaces with no stated cause. That happened.

The description gate now reproduces the workflow's own expression, so the
mismatch is reported locally, with its reason, before a push. Three tests cover
it; the first is a regression test for the failure above.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
An AGENT certificate establishes that a trajectory is consistent with its own
transcript. A SIM certificate establishes that a trajectory replays under its
own transition program. Both can hold of a pair that never interacted, and
nothing in the family caught that.

BOT binds one AGENT, one SIM and two ENV certificates, reaching the harness
through the agent so the chain stays one-way, and checks the correspondence:
a strictly increasing map from simulation transitions to retained records
inside the agent's observation ceiling, each aligned invocation's output equal
to the simulation's own observation projection and its input equal to the
action the simulation replayed. An unattributed transition is FAIL unless the
contract declares it exogenous.

Environment separation is declared, not measured. A fused bot-in-sim runtime
is UNKNOWN at BOT.5 and caps at domain depth 4: the declaration is honest, but
no retained evidence distinguishes a simulator the agent cannot read from one
it can. Open-endedness is not checkable at any depth and is excluded.

Factor bind_certificate() into common.py and use it from both agent.py and
bot.py, so a fourth binding surface costs one call rather than a copied
prologue.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The gate's own tests hardcoded six domains, 28 checks and SIM as the last
coordinate range. Landing HARNESS and AGENT broke five of them, which is the
gate working but the fixtures failing: a test that must be hand-edited whenever
the tree grows is the maintenance failure this gate exists to prevent, and it
should not be reintroduced in the gate's own tests.

Fixtures now read the live catalogue, and the synthetic-domain cases use a name
the catalogue will never declare so they do not decay as real domains land.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
VSTD is an object-oriented representation meta-language whose nomenclature is
meant to be followed rather than looked up, but the grammar that makes it
followable was not written down anywhere a reader would find it.

VSTD-<NAME>-<level>.<module>, where the five levels mean the same kind of thing
for every name: facets, dynamics, statics, closure, adaptation. Both axes of the
normative ladder already instantiate exactly those five, so the convention is
stated as that ladder made total over the object set rather than as a new
numbering laid over it.

Also separates the three coordinate systems that get conflated: a specification
surface, a domain check coordinate (a position in a prerequisite graph, not a
level), and a serialized receipt identifier (frozen once receipts exist under
it, which is why VSTD-DATA-0.1 keeps its shape). A well-formed identifier is not
a claim that an implementation exists at that coordinate.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Version 2.0.0 gives an actor identity a bounded, verdict-adjacent form through the
ZIZK token family, but gives it no way to declare what it withholds. The tenth
prohibited inference forbids reading a minimized record as preserving its original
claim boundary, and nothing currently stands in that inference's place, so
minimizing disclosure costs an actor evidential weight with no way to earn it back.

Milestone 10 states the replacement as a declared, checkable boundary delta: the
claim before minimization, the transformation applied, and the narrower claim that
survives it. The three properties are named separately because each is separately
refutable — declarative (a boundary stated ahead of the decision), federated (every
member evaluates it offline, no hub grants it), verifiable (a bounded result in the
existing identity verdict set, not a warning).

The objects land in the stored non-receipt mechanism registry beside the ZIZK
tokens rather than as a new specification surface. The object set stays closed, and
a property of an actor stays unable to reach a computational verdict, which the
Prime Invariant requires.

Sequenced explicitly after 2.0.0 stabilizes, and records the matching non-goal:
a satisfied declaration bounds what one record discloses, never what a federation
can jointly infer.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The opening 2.0.0 bullet said "eight executable grounded domain adapters" and
then enumerated nine. The numeral regressed when BOT landed in 9a8d415: the
enumeration in the same paragraph gained its ninth member, and the count that
introduces it did not.

Nine is the measured figure. src/verifier/domains/catalog.py defines exactly
nine adapter keys (DATA, ENV, BENCH, HYPER, MODEL, SIM, HARNESS, AGENT, BOT)
carrying 43 cumulative checks, and standard/DOMAIN_GROUNDING.md, docs/V2_CANDIDATE.md
and the pull request body already agree on nine.

The other counts in the same entry were re-measured rather than assumed: 43
cumulative checks sum from the per-domain check tuples, four additive domain
schemas exist under src/verifier/schemas, examples/domain_grounding.py yields
nine runnable specimens, and the certification section's six bounded native
adapters match NativeCertificationMechanism.supported_obligations. Only the one
numeral was wrong.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
TimeLordRaps and others added 5 commits September 22, 2026 21:45
TRAIN's composition gains GRAPH as an operand: the architecture of the model
or algorithm being trained, with its layers as members and its operators as
the relation between them. TRAIN is now

  HYPER(VSTD, MODEL, DATA, ENV, SIM, BENCH, GRAPH) indexed by GRAPH-1

so GRAPH holds two roles. The index is still the order the data was consumed
in. The new operand is the architecture.

TRAIN-6.1 now lists the architecture among what the certificate emits. It
already emitted it: the TRAIN artifact carries the `architecture` field, and
a domain certificate embeds its whole evidence bundle. TRAIN-6.5 keeps the
DATA join and adds the one the architecture makes with the optimizer
contract. The pair is the whole recipe, enough to train shadow models on
other data and infer membership from the trained model's outputs, so that
join needs no corpus. The two rows change identically in the catalogue and
in DOMAIN_OBLIGATIONS.md.

The Graph axis cannot express this operand yet. GRAPH-1's artifact and
transformation types are provenance kinds, `ArtifactType(...)` rejects any
type it does not know, and neither vocabulary names a layer or an operator.
The specification says so rather than implying a GRAPH certificate over an
architecture can be built. A new test pins both vocabularies beside that
sentence, so widening either one turns the suite red until the sentence is
read again.

It also removes a false statement from the unreleased release note. The
note still said TRAIN is "carried as a named composition rather than an
object", but TRAIN was admitted to the namespace on 2026-09-22 and
COMPOSITIONS is empty.

implementation_digest() does not cover the obligation catalogue, and it
stays at sha256:156b7f52...76369, measured before and after.
domain_obligation_digest() moves from d0d42d2d... to ce694885...; nothing
pins it.

Verified by planting drift and requiring red, eight plants, all caught:
- the operand dropped from the runtime;
- the operand dropped from the document;
- a non-object operand;
- 6.1 drifted in the document only;
- 6.5 drifted in the runtime only;
- a LAYER artifact type;
- an OPERATOR transformation type;
- the vocabulary sentence edited.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The relational objects are four -- GRAPH, HYPER, OWNER and IDENTITY -- as
RELATIONAL_OBJECTS and the partition paragraph both say. Two summaries were
written before IDENTITY existed and never updated:

- The OWNER introduction said "Of the three relational objects ... only
  this one is ungrounded". There are four, and IDENTITY is ungrounded too.
- The META_TIERS OWNER section said "the only ungrounded one" and "None of
  the three". It now names IDENTITY as the fourth and says what IDENTITY
  relates.
- The IDENTITY introduction called itself ungrounded "like the other three
  of this family"; the family is five. It now says "like every other object
  of this family", which cannot go stale.

COLLECTIVE-1.1 is "The collective is declared as a graph of role classes at
a stated coordinate." It binds nothing. Yet both COLLECTIVE introductions
said it "binds a GRAPH", and the lattice section counted it among the
identity family's declared edges. The collective is the graph; no row binds
a GRAPH certificate. GRAPH-1's artifact types include no role class, so no
such certificate could be built anyway. All three sentences now say so. The
collective's one declared operand is the ROLE set COLLECTIVE-1.3 binds.

The lattice figures in META_TIERS are published constants that nothing in
the repository computes. So whether they counted a GRAPH-to-COLLECTIVE edge
cannot be measured, and this commit does not touch them.

Two guards, each read back from the catalogue:
- Every count and list of the relational objects in either specification
  equals RELATIONAL_OBJECTS, with reach asserted. Seven plants, all caught;
  one of them widens the constant and leaves the prose alone.
- Every coordinate a summary says "binds" names a row whose requirement is
  "bound by". This is general rather than naming COLLECTIVE. Four plants,
  all caught.

implementation_digest() is unchanged at sha256:156b7f52...76369.
domain_obligation_digest() moves, since it covers the document; nothing
pins it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The pre-push description gate asked about the local branch and the working
tree. `git push origin work:feature` moves the pull request on `feature`,
so the gate found no pull request for `work` and passed; and an unpushed
edit in the checkout could make a stale description look current.

The gate now takes each pushed branch head from git's ref lines, looks up
open pull requests on that remote branch in the repository the push goes
to, skips pull requests from forks, and checks each description with a new
--commit mode that reads the catalogue, the inventory and the head from the
pushed commit's own tree. A lookup gh cannot answer fails the push; a
remote off GitHub passes without printing its address.

A new pull-request-description workflow re-runs the check on every push and
every edit of the description, which the repository checks never did for an
edit. It runs the pull request's own gate with a read-only token and passes
the description through the environment, never into the script.

The workflow timeout test now discovers the workflow list rather than
naming it, so this workflow could not have been added without one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Every push of a new head has to come with a revised description. The new
check compares the description with the revision that was in force when the
pull request's current head was pushed, and refuses the push when the two
are the same word for word. Spacing and line endings are not a revision.

Nothing is stored. GitHub keeps every revision of a description with the
moment it was made, and the first pull-request workflow run on a head marks
when that head was pushed; later runs on the same head come from edits. A
question GitHub does not answer refuses the push rather than passing it.

The pre-push gate runs this check before the existing one that holds the
description to the pushed commit's tree, and reports both. The hosted
workflow gains a changed-since-last-push job for pushes that bypass the
local hook. A workflow runs after the push it judges, so it can only fail.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`changed-since-last-push` ran only on `synchronize`. A job skipped on an
`edited` event reports success, and a required check reads the latest report
on the head, so any edit after an unrevised push replaced the failure with a
skip: the check could be cleared without revising anything.

The job now runs on every event with `--pushed HEAD`, which judges the push
that made HEAD the head as it was made. Each head's push moment is its first
pull-request run on the pull request's head branch, from the pull request's
own head repository; the push before is the latest one strictly earlier. The
description in force at each push comes from the recorded revisions, and the
two are compared word for word. Neither side is the live description, so the
verdict is the same on every later event, and only another push with a
revised description changes it. A head no run recorded, a deleted revision,
or none old enough is refused rather than guessed; an opening push has
nothing to compare with and passes, saying so.

The job has its own concurrency group. Shared with `describes-head`, either
would cancel the other's verdict.

The branch name is percent-encoded into the runs query: a branch named with
`&` or a space would otherwise truncate or split it. The docstring no longer
names verifier's `describes-head` script, so other repositories can carry
this file byte for byte.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Comment thread scripts/check_pr_description.py Fixed
Comment thread scripts/preflight.py Fixed
Comment thread scripts/preflight.py Fixed
TimeLordRaps and others added 4 commits September 24, 2026 02:39
…dapters

Enforce [OBJECT]-X.m coordinate grammar across domain catalogs, schemas, and test suites, eradicating flat dot notation.

Qualify ACTOR and OWNER as functional consequence adapters:
- ACTOR verifies identity, delegation replay, witness accountability, and attribution continuity.
- OWNER verifies consequence limbs, lifecycle holding (freeze, seal, thaw), and witness binding to natural persons.
- Rename vstd-sim-1.schema.json to verifier-simulation-receipt-1.schema.json with canonical \.
- Fix CodeQL alert on tarfile extraction member path traversal in check_pr_description.py.
- Fix test node id parameterization in test_preflight.py to prevent evidence boundary report leaks.
- Pass full test suite (3,189 passed, 39 skipped, 0 failed), presentation gate, and namespace closure.

Co-Authored-By: Antigravity <noreply@google.com>
…2.0.0

- Realign ROADMAP.md Milestone 10 to eliminate false post-v2.0.0 sequencing and articulate the Privacy-Transparency Parity across Level 6 disclosure surfaces.
- Implement verifier.privacy package covering [OBJECT]-6.1 through [OBJECT]-6.6:
  - models: ObserverParty, DisclosureSurface, DisclosureBound, TransparencyCommitment, EmissionContext, EmissionResult.
  - engine: EmissionEvaluator dynamic emission-time evaluator generating verifier-privacy-assessment-receipt-1.
  - composition: CompositionDeltaEvaluator enforcing relational join leakage boundaries across co-emitted certificates.
  - independence: assert_verdict_independence strictly verifying that privacy redaction leaves Tier 1-5 computational verdicts bit-identical.
  - adapters: DifferentialPrivacyBudget, ContextualIntegrityEvaluator, SelectiveMerkleDisclosure, SafeHarborPartition.
- Add adversarial and conformance test suite in tests/test_privacy_engine.py with authentic certified DATA specimen integration.
…tology, and executable contracts

- Implement SoftwareOneWayDataDiodeEmulator with severed reverse channel semantics, push-only streaming, and mandatory machine/human-readable disclaimers.
- Enforce fail-closed zero false confidence rejection if software diode emulator is presented for TIER_3_TESLA_CAGED physical containment.
- Ground superintelligence computationally: pure inference MODEL + observation/action HARNESS = AGENT, and situated AGENT + SIM = BOT (where REAL_WORLD_PHYSICAL_SPACE acts as SIM).
- Decouple SPACE (manifolds, topologies, d/c propagation delays, lightcones), TIME (causal clocks, monotonic ticks, spatial configuration slices), and EVENT (punctual transitions, interrupts, percepts, actuations) into separate computational object classes for clean division of complexity.
- Formalize executable corrigibility contracts: ShutdownIndifferenceContract (zero preemption penalty), InterruptibilityProtocol (watchdog heartbeat and unmaskable preemption signals), OracleImmutabilityAttestation (write-protected evaluation), VacuityFalsificationCheck (ex falso quodlibet rejection), and HarnessImmutabilityGuard (write-protected memory pages).
- Enrich ROADMAP.md Milestone 9 with diode emulator dual-requirement, superintelligence ontology, and executable corrigibility contracts.
- Add comprehensive adversarial test suites in tests/test_diode_emulator.py, tests/test_corrigibility_ontology.py, and tests/test_corrigibility_contracts.py.
… reward locks

- Implement BespokeTemporalComb and CovertTimingChannelDetector in src/verifier/hardware/time_comb.py with sub-millisecond nanosecond resolution (1 ns <= dt <= 1,000,000 ns).

- Bound steganographic covert timing channels and phase jitter across optical and physical isolation boundaries.

- Implement TripleCompositeRewardLock and ComputationProofThawEngine in src/verifier/corrigibility/reward_lock.py compounding DFA, Answer Set Programming, and Recursive Parity Branching.

- Prevent wireheading via computation-as-proof isomorphism where execution intermediate states form the key seed.

- Update ROADMAP.md Milestone 9 with temporal comb and reward lock architectures.

- Add comprehensive adversarial test suites in tests/test_vstd200_time_comb.py and tests/test_vstd200_reward_lock.py.
Comment thread src/verifier/runtime/gate.py Fixed
Comment thread src/verifier/runtime/gate.py Fixed

Copy link
Copy Markdown
Owner Author

Development progress — 2026-10-07

The published PR head remains 06612f70992d6271b25541a5e2f004349033f056. The work described below is local, unpublished development progress. These results do not qualify the currently published head.

Progress recorded in the local candidate

  • Completed regression accounting for the selected 18,811-case inventory: 18,718 PASS, 23 FAIL, 5 setup ERROR, 50 SKIP and 15 held/unrun. This is not a clean full-suite pass.
  • Repaired runtime reader-limit behavior with recorded pre-fix failures and subsequent focused and broader regression evidence.
  • Built a 2.0.0a1 wheel and source archive, checked a fresh temporary installation against 566 exact selected package members, and exercised installed entry points.
  • Recorded 158 passing selected PRDEL shard/index/CLI checks and 16 passing reader checks, with one explicit Windows capability skip. These component checks do not establish that the complete native PRDEL release workflow or required generated description passes.
  • Independently reviewed the package contents and retained test receipts. The later log-hash annex is explicitly a post-run evidence binding.
  • Checked the frozen receiving contract and runtime coordinates for the separate 564-member consumer. Its launcher refuses the 566-member successor until a new source/package/member selection is qualified. Current harness admission likewise retains UNKNOWN/refusal for the unqualified development pairing.

The development installation was bound to local commit 20b2a7bc58d2c39e074de044fc20fee915e0230e plus the recorded dirty-source selection. Its wheel SHA-256 is 90388ab7dc78fb2c0da1d008d4b7c33e47d12a360f0a1ee3cdb7f9be452f40eb; the sealed installed-qualification receipt SHA-256 is 539bbfdafd7aec55f593aa10ea7da5b5385a326a5860b59008c4f3a9e1d2ce08. Those artifacts and receipts are still local; a digest here is not a public reproduction bundle.

Remaining release gates

CORE/source integration; reference and portal reconciliation; retained regression failures, setup errors and held inputs; required certificate and promotion evidence; exact final package/harness selection; core polish; required native PRDEL functions and generated description; and final acceptance.

Corrigibility remains a separate evolving extension across the 26 computational object types. Genuinely new extension work may remain explicitly WIP for core release; existing core gaps remain core obligations.

This is a status comment, not the required PRDEL-generated description, a source push, or clearance to merge or release.



def _digest_bytes(value: bytes) -> str:
return "sha256:" + hashlib.sha256(value).hexdigest()
raise ValueError("authentication key encoding differs") from exc
if (not 32 <= len(key) <= 128
or policy["key_digest"]
!= "sha256:" + hashlib.sha256(key).hexdigest()
receipt = assess_secret_request(args.request, scanner_binary=args.scanner_binary,
scanner_configuration=args.scanner_config)
if args.json:
print(json.dumps(receipt, sort_keys=True))
Comment on lines +398 to +400
print(f"[{receipt['outcome']}] Selected secret gate: "
f"{receipt['artifacts_scanned']}/{receipt['artifact_count']} artifacts; "
f"{receipt['findings_count']} findings.")

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants