Skip to content

feat(af02): add T018 corpus and assertion contracts - #73

Open
TheHalfMoon wants to merge 10 commits into
mainfrom
feat/af02-a0-corpus-assertion-contract
Open

feat(af02): add T018 corpus and assertion contracts#73
TheHalfMoon wants to merge 10 commits into
mainfrom
feat/af02-a0-corpus-assertion-contract

Conversation

@TheHalfMoon

@TheHalfMoon TheHalfMoon commented Aug 29, 2026

Copy link
Copy Markdown
Owner

Summary

Implement AF-02 T018 corpus/assertion contract infrastructure from canonical T017 source 94bf4f1a9987f474613e67ddbc182ece8dff5a8d.

Scope

This candidate changes exactly five paths:

  • specs/016-af-02-adversarial-test-strength/corpus-manifest.json
  • specs/016-af-02-adversarial-test-strength/assertion-registry.json
  • tools/af02-verifier/src/corpus.rs
  • tools/af02-verifier/src/lib.rs
  • tools/af02-verifier/src/main.rs

No schema, surface policy, resource policy, workflow, Cargo input, dependency, product source, fuzz/property/replay/coverage/mutation result, or live ruleset changes are included.

Canonical design seed

The retained corpus starts with zero scenarios and the assertion registry starts with zero assertions. This establishes the A0 contract without using dependent execution outcomes to prove A0.

The corpus freezes the planning-defined limits:

  • maximum fixture bytes: 262144
  • maximum committed corpus bytes: 8388608
  • contains_phi = false for every future retained scenario
  • closed provenance, expected-outcome, and discovery-origin enums

Exact empty corpus SHA-256:

31b60a670f66d37dbbe039456b9f1a0fab95a75e880f3026f88e871b8a737a10

The assertion registry binds that exact digest and the canonical surface-policy SHA-256 dbd4a455d03e0bc4068155c1927bd827d3d1204fb26a0b7cb55e38c1b4abcf26.

Validator behavior

The verifier:

  • binds the corpus parser to the planning-frozen af02-corpus-v1.schema.json Git blob;
  • rejects duplicate JSON keys and unknown fields;
  • validates exact schema ids, lowercase SHA identities, safe repository-relative paths, IDs, size limits, provenance enums, and contains_phi = false;
  • enforces unique scenario/assertion/replay/fixture identities and deterministic ordering;
  • exposes both frozen parser entrypoints: parse-corpus and parse-assertions;
  • enforces assertion runner-shape rules for CARGO_TEST versus AF02_REPLAY_BINARY;
  • enforces source/config identity shapes and environment allowlist syntax;
  • requires exact corpus/assertion cardinality and bijection;
  • rejects orphan scenarios/assertions and expected-outcome mismatches;
  • requires every assertion surface id to resolve to an existing canonical critical surface;
  • reads each retained fixture from the supplied repository root through the already-classified fs::read boundary and rejects missing files, observed sizes above the frozen per-fixture limit, declared/observed length mismatches, and SHA-256 mismatches.

No new executable authority surface is introduced. T022 remains responsible for the stronger base-gate untrusted-input symlink/containment and pre-read input ceilings.

Tests

Owned unit tests cover:

  • the empty design seed;
  • PHI rejection;
  • orphan assertion binding;
  • invalid replay-runner Cargo fields;
  • fixture digest mismatch;
  • exact fixture byte acceptance.

Cubic findings on the initial head were fixed on 292702d711328e7ce06c36cc4f2928cdfa0aded3 and both review threads are resolved.

Qualification state

Two temporary branch-only qualification attempts (33256288688, 33256366561) failed before any runner step began (steps=[]) and the temporary workflow was removed from the final candidate.

On the current exact head 292702d711328e7ce06c36cc4f2928cdfa0aded3, all five canonical pull-request workflows also terminate before any runner step begins. This is recorded as an external GitHub Actions runner-start condition, not as PASS evidence and not as a product/test failure. No required check is bypassed or weakened.

Exact-head CI remains required before merge; T018 is not canonical until those workflows can execute and succeed.

@qodo-code-review

Copy link
Copy Markdown

ⓘ Qodo reviews are paused because your trial has ended. Ask your workspace admin to add credits to resume reviews. Manage billing

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your trial has ended. Reactivate Greptile to resume code reviews.

@coderabbitai

coderabbitai Bot commented Aug 29, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 9 minutes.

View limit details

Limit details: You’ve used the included review currently available.

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Free

Run ID: 956539ff-807b-40d9-ac61-702af917116d

📥 Commits

Reviewing files that changed from the base of the PR and between 94bf4f1 and 292702d.

📒 Files selected for processing (5)
  • specs/016-af-02-adversarial-test-strength/assertion-registry.json
  • specs/016-af-02-adversarial-test-strength/corpus-manifest.json
  • tools/af02-verifier/src/corpus.rs
  • tools/af02-verifier/src/lib.rs
  • tools/af02-verifier/src/main.rs

Note

🎁 Summarized by CodeRabbit Free

Your organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting https://app.coderabbit.ai/settings/billing.

Comment @coderabbitai help to get the list of available commands.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 5 files

You're on the cubic free plan with 7 free PR reviews remaining this month. Upgrade for unlimited reviews.

Re-trigger cubic

Comment thread tools/af02-verifier/src/corpus.rs
Comment thread tools/af02-verifier/src/main.rs

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your trial has ended. Reactivate Greptile to resume code reviews.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your trial has ended. Reactivate Greptile to resume code reviews.

Copy link
Copy Markdown
Owner Author

External qualification blocker — exact-head runner start

Current candidate: 292702d711328e7ce06c36cc4f2928cdfa0aded3.

All five canonical pull-request workflows are present on this exact head but terminate before any runner step begins:

  • ci run 33256681853 — job rust: failure, steps=[]
  • af01-assurance-proof run 33256681885 — pre-step failure
  • af01-scorecard run 33256681922 — pre-step failure
  • af01-security run 33256681878 — pre-step failures across its jobs
  • cf06-oracle run 33256681854 — pre-step failures across its jobs

The same pre-step condition reproduced on the temporary branch-only qualification lane and after an explicit failed-job rerun on the previous exact head. No failing command, test, build, audit, or verifier step exists to diagnose because runner execution never starts.

Repository metadata currently reports visibility private. Earlier successful T017 branch qualification metadata reported private=false; the runner-start failures began after that visibility transition. This correlation is recorded without claiming a specific GitHub billing/runner root cause because the Actions annotation text is not exposed through the available connector.

Cubic's two substantive T018 findings were fixed on this head and their threads are resolved. Qodo/Greptile remain unavailable due trial state; CodeRabbit is currently rate-limited. None of those availability states is treated as PASS.

No required check will be bypassed or weakened. T018 remains non-canonical and unmerged until exact-head workflows can execute and succeed.

Copy link
Copy Markdown
Owner Author

Current external qualification blocker

Live recheck on 2026-08-29 confirms the repository remains private and PR #73 remains on exact head 292702d711328e7ce06c36cc4f2928cdfa0aded3 against canonical base 94bf4f1a9987f474613e67ddbc182ece8dff5a8d.

A fresh retry of canonical ci run 33256681853 was requested on this unchanged exact head. The latest rust job is 99117451000 and again completed failure with steps=[], so no checkout, toolchain, format, clippy, test, or product command executed.

This remains an external GitHub Actions runner-start condition. It is not classified as a code/test failure and is not PASS evidence. Required checks are not bypassed or weakened.

Repository-side review state is otherwise clean: both substantive Cubic findings are fixed on the current exact head and their review threads are resolved. T018 remains non-canonical until exact-head required workflows can execute and succeed. Per canonical task order, T019 is not started before T018 canonicalization.

Copy link
Copy Markdown
Owner Author

External execution blocker diagnosis update (2026-08-29):

  • GitHub public status reports Actions operational; this is not a current platform-wide Actions outage.
  • The repository is currently private.
  • On exact head 292702d711328e7ce06c36cc4f2928cdfa0aded3, canonical GitHub-hosted jobs continue to terminate before the first runner step (steps=[]), including fresh reruns.
  • The connected repository API exposes no account-level billing, payment-method, Actions budget, or GitHub-controlled disabled-state mutation, so this condition cannot be repaired by a repository commit or by weakening CI.
  • GitHub documentation states that private repositories consume hosted-runner quota, that usage is blocked when quota is exhausted without a valid payment method, and that an Actions budget may immediately unblock workflows failing due to billing/storage limits. GitHub also documents a separate GitHub-controlled disabled state that repository Actions settings cannot override.

Required external remediation is therefore account-level: restore GitHub Actions hosted-runner eligibility for this private repository (valid billing/payment method and sufficient Actions budget/quota, or GitHub Support if the account is in a GitHub-controlled disabled state). Repository visibility is intentionally not changed as a workaround.

No PASS is claimed. T018 remains non-canonical until the required exact-head workflows execute and succeed.

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.

1 participant