Repository navigation
feat: add strict producer-visible JSON contracts #457
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
Changes from all commits
Commits
Show all changes
300 commits
Select commit
Hold shift + click to select a range
d496736
fix(evals): reject invalid judge handoffs
aviggiano b4c16a1
refactor(artifacts): remove obsolete event repair API
aviggiano d2aa406
feat(evals): define benchmark analysis contracts
aviggiano 920c30b
feat(evals): enforce benchmark semantic gates
aviggiano 3164f59
fix(dashboard): reject malformed topology evidence
aviggiano a83a75a
fix(evals): consume closed event journals
aviggiano 3741209
fix(runtime): require current Smithers inspect evidence
aviggiano 0a52448
fix(cli): validate bundled event journals
aviggiano d214ac5
fix(cli): consume strict benchmark analysis contracts
aviggiano 23e0644
chore: merge current main into strict JSON contracts
aviggiano 017e19e
fix(references): register strict cache manifests
aviggiano ace0af3
fix(runtime): close state export JSON boundaries
aviggiano dcea39c
fix(evmbench): enforce strict benchmark contracts
aviggiano 8f5ca4f
fix(runtime): reject malformed reference inputs
aviggiano dfcc20a
test(cli): pin strict Smithers fixture contracts
aviggiano 7e78cd3
fix(cli): register EVMBench schemas
aviggiano 042f2d2
feat(config): enforce resolved config v2 contract
aviggiano 21d645d
fix(runtime): require exact status envelopes
aviggiano 868802a
fix(config): dedupe named semantic diagnostics
aviggiano 980f2b0
feat(artifacts): close run-state provenance contract
aviggiano ba0531a
fix(modal): close recovery summary parser
aviggiano a9d6624
feat: close dashboard and runtime audit contracts
aviggiano ad39fb4
fix(dashboard): reference current run-state schema
aviggiano 4c39d3b
fix(runtime): enforce Smithers lifecycle contracts
aviggiano 610cfb7
fix(evals): align expansion with closed provenance
aviggiano 2099fd7
test: harden dashboard contract boundaries
aviggiano 5254a5f
feat(cli): close result and operator input contracts
aviggiano 45df621
fix(cli): integrate current public contracts
aviggiano 2d9bbd1
fix(dashboard): validate persisted run documents
aviggiano dfb9fb0
refactor(config): remove loose profile schemas
aviggiano 72ddf64
refactor(dashboard): remove legacy prompt rename wire shape
aviggiano 729c568
feat(artifacts): close manifest provenance metadata
aviggiano 10f6c74
fix(artifacts): strictly parse analysis bundles
aviggiano e6f9692
fix(runtime): reject malformed recovery evidence
aviggiano 893f869
fix(runtime): require exact workflow control evidence
aviggiano c58b6d3
fix(modal): reject malformed worker result evidence
aviggiano 62e32d0
fix(dashboard): remove speculative JSON seams
aviggiano f1112cd
feat(evals): close suite JSON contracts
aviggiano 702ee88
fix(evals): separate dependency registry IDs
aviggiano eb46f5e
fix(ci): reject malformed smoke diagnostics
aviggiano 7d3fef3
test(evals): use canonical suite and review fixtures
aviggiano 076f2cf
fix(cli): scope opaque JSON value types
aviggiano 388ee06
fix(modal): fail closed on corrupt recovery evidence
aviggiano 91f75fb
test(evals): enforce suite schema parity
aviggiano c64a1d6
test(modal): remove stale eval diagnostic details
aviggiano c00bc40
style(evals): format strict suite changes
aviggiano 4238d7a
refactor(evals): remove obsolete loose record helper
aviggiano 123763e
fix(modal): reject corrupt model work evidence
aviggiano 956b7ab
fix(json): harden validator failure boundaries
aviggiano f142712
feat(evals): schema public diagnostics
aviggiano e8e89d1
fix(modal): strictly persist launch state
aviggiano 1449259
fix(modal): strictly persist recovery state
aviggiano 9c4c528
fix(modal): strictly persist worker lineage
aviggiano c3296f3
fix(json): close validator startup identity chain
aviggiano 9267cde
feat(cli): schema report bundle manifest
aviggiano 1582223
fix(modal): strictly persist pinned source proof
aviggiano 663f80a
fix(modal): strictly publish worker results
aviggiano e5d80c1
feat(evals): schema benchmark policy manifests
aviggiano 7bc0b5e
fix(modal): strictly collect recovery lifecycle
aviggiano cfc9fe6
fix(cli): strictly read eval reports
aviggiano aecef81
fix(modal): strictly collect public diagnostics
aviggiano 9bf3ca2
fix(modal): strictly collect public bundles
aviggiano ad4e4d9
fix(modal): derive workers from strict lineage
aviggiano eb7265c
feat(modal): schema benchmark control manifests
aviggiano 26a3add
feat(release): validate report artifacts
aviggiano 8f72f6c
feat(runtime): validate durable JSON documents
aviggiano d8438dc
feat(evals): close recovery and status documents
aviggiano a7c2cf8
feat(evals): schema canonical ground truth
aviggiano dff2330
feat(evals): schema longitudinal history
aviggiano 81dd3de
fix(evals): preserve ground truth size diagnostics
aviggiano e28f16c
fix(modal): type ground truth conversion exactly
aviggiano ea6f6e9
feat(modal): require strict benchmark configs
aviggiano 6b99ed6
fix(modal): reuse validated cohort snapshot
aviggiano 5a989b8
fix(modal): strictly parse public diagnostics
aviggiano 76edc2a
fix(runtime): validate terminal semantic evidence
aviggiano 0468919
Merge origin/main into feat/439-strict-json-contracts
aviggiano ce2f9dd
fix(ci): enforce strict benchmark controls
aviggiano 5ef9cd2
fix(modal): validate workflow control seals
aviggiano 33f73eb
feat(evals): type history publication handoffs
aviggiano 35dacf4
fix(evals): reject malformed provider JSON
aviggiano fa07992
Merge remote-tracking branch 'origin/main' into feat/439-strict-json-…
aviggiano d9018ca
fix(ci): parse external JSON strictly
aviggiano 9ef2408
fix(runtime): verify canonical agent reports
aviggiano 0d35d03
fix(modal): validate smoke evidence strictly
aviggiano fb8256f
fix(json): parse package and schema metadata strictly
aviggiano 243fcd4
fix(ci): validate publication inputs strictly
aviggiano ab874bd
fix(modal): harden security-sensitive JSON readers
aviggiano a8138b4
refactor(evals): remove score compatibility aliases
aviggiano 7644752
fix(runtime): close generated workflow input
aviggiano 4ca5b51
fix(dashboard): parse frontend JSON strictly
aviggiano b606ef9
fix(runtime): parse package manifests strictly
aviggiano f707fdf
fix(config): reject unknown semantic helper fields
aviggiano fae46a1
fix(runtime): preserve strict manifest projections
aviggiano 813ff78
fix(artifacts): align retained Zod contracts
aviggiano d418147
test(runtime): load strict patch helpers
aviggiano ab59a1c
fix(runtime): preserve preliminary severity provenance
aviggiano 3fb6414
fix(dashboard): validate browser wire contracts
aviggiano 4d33cd3
fix(json): reject report and scoring compatibility
aviggiano f72dca3
fix(runtime): parse generated adapter JSON strictly
aviggiano eef48a1
fix(artifacts): remove bundle compatibility omission
aviggiano fe276d8
fix(runtime): enforce generated workflow semantic gates
aviggiano b138c07
fix(contracts): separate retained shape and semantic gates
aviggiano 2460067
fix(report): require typed implementation coverage
aviggiano a20dbcf
fix(artifacts): enforce review semantic joins
aviggiano e1e63ff
test(smoke): exercise agent JSON correction loop
aviggiano 9598a37
fix(runtime): require verified report authority
aviggiano 7568e21
test(runtime): align regression fixtures with strict contracts
aviggiano caa9b01
test(runtime): exercise strict patch replay readers
aviggiano 88d1312
fix(evals): require verified final reports
aviggiano bd8d69c
test(cli): seal verified report fixtures
aviggiano 78cb289
style(runtime): format authority diagnostic
aviggiano a037ec6
Merge remote-tracking branch 'origin/main' into feat/439-strict-json-…
aviggiano 8714ce2
fix(modal): register public bundle v5 schema
aviggiano 5340b8f
fix(runtime): align nested submodule symlink gates
aviggiano 0a0995a
style(runtime): format rollback regression
aviggiano b3862cd
refactor(modal): use canonical schemas for state parsing
aviggiano 8165947
fix(runtime): require exact prompt path binding
aviggiano 0e95a76
feat(evals): register LLM judge result contract
aviggiano 915e1b0
feat(evmbench): register NanoEval result contracts
aviggiano 0a6f58a
fix(json): honor schema-specific instance byte limits
aviggiano 538a9de
fix(artifacts): close JSON Schema Zod parity gaps
aviggiano ba53635
refactor(evmbench): share registered CLI result contract
aviggiano 1257885
fix: preserve pinned submodules in cloud handoffs
aviggiano 099dbc4
fix(evmbench): align NanoEval timestamp validators
aviggiano d95f5bf
fix: align portable URL and timestamp contracts
aviggiano a0de354
test(modal): match node map semantic diagnostic
aviggiano 2bbbfc0
fix(evals): reject noncanonical history inputs
aviggiano 0f35e47
fix(evals): preserve analysis source timestamps
aviggiano 83b06ec
fix(evals): reject invalid planned telemetry graphs
aviggiano fae6533
fix: validate exact JSON preflight envelopes
aviggiano 7f8e47a
feat(artifacts): register analysis bundle payload schemas
aviggiano 918398a
refactor(artifacts): validate analysis payloads Ajv-first
aviggiano e883368
test(artifacts): exhaust analysis bundle contract boundaries
aviggiano 0b72159
refactor(artifacts): validate analysis manifest Ajv-first
aviggiano f4a5190
fix(runtime): schema-validate adapter recovery markers
aviggiano fc6212e
fix(modal): stop recovery after terminal output failures
aviggiano 8e41d68
fix(contracts): close strict artifact gaps
aviggiano 985d37c
fix(contracts): couple terminal artifact evidence
aviggiano 9780628
feat(runtime): resolve semantic artifacts by declarations
aviggiano c22f2ca
merge(main): retain strict JSON contracts
aviggiano 7583774
fix(artifacts): make property lens validation Ajv-first
aviggiano 2e3d4c5
fix(runtime): require declared property lens inputs
aviggiano 8829294
Authenticate property lens fan-in inputs
aviggiano 14e080e
fix(runtime): authenticate declared property handoffs
aviggiano 7580be0
feat(artifacts): type generated-test support bundles
aviggiano 3d10f1a
fix(runtime): scope semantic producers to ancestors
aviggiano ed7e43a
fix(runtime): align generated semantic artifact resolution
aviggiano 6ca8a10
fix(runtime): require planned lens declarations
aviggiano 7d786eb
fix(runtime): validate every declared property role
aviggiano 7907ae2
fix(artifacts): enforce generated-test bundle integrity
aviggiano 344a1b2
fix(runtime): bind finalization manifests to snapshots
aviggiano b4ad102
feat(contracts): define property campaign v3
aviggiano 5164abf
docs(campaign): require validated v3 handoff
aviggiano fa77e9b
test(runtime): cover sealed prerequisite rewrites
aviggiano 4ecac53
docs: align run-state v5 labels
aviggiano a67cb35
fix(runtime): resolve semantic artifacts by declared contracts
aviggiano d558943
fix(runtime): consume authenticated gate snapshots
aviggiano f7339e7
feat(runtime): bind property campaign v3 context
aviggiano 122d193
test(contracts): prove campaign v3 zod parity
aviggiano ca1278b
fix(runtime): bind fanout lenses to sealed attempts
aviggiano b5bcbde
test(runtime): cover producer-free and custom report authority
aviggiano 860ed92
test(runtime): bind recovered suite expectations to declarations
aviggiano d0c9d26
fix(campaign): close paths and verify v3 handoff
aviggiano 0ecb40a
fix(runtime): seal exact artifact ancestor authority
aviggiano aef4b66
fix(prompts): render generated-test bundle guidance
aviggiano 353ee9a
fix(runtime): reject missing generated companions
aviggiano d410deb
fix(artifacts): close generated bundle arrays
aviggiano 0b97e8e
fix(runtime): retain sealed authority for verified reads
aviggiano 2b7f414
merge: consolidate immutable finalization authority
aviggiano 84544f6
merge: consolidate declared artifact authority parity
aviggiano b50ad90
style(artifacts): format semantic gate diagnostics
aviggiano 6cb2bea
fix(artifacts): bound generated test bundles
aviggiano 4621b5c
fix(campaign): authenticate evidence publications
aviggiano 771e806
test(runtime): require sealed missing-run recovery evidence
aviggiano fc2cd3b
fix(runtime): bind campaign evidence authority
aviggiano 346f0b2
fix(campaign): bind finding provenance authority
aviggiano 94d197f
feat(artifacts): authenticate generated test aggregation
aviggiano 4a678d9
fix(runtime): bind finalization to verifier snapshots
aviggiano 5914dfc
fix(campaign): bound evidence semantic gates
aviggiano cbfbc09
fix(artifacts): bind generated bundles to frameworks
aviggiano 80f223e
fix(review): preserve finding identity across stages
aviggiano 8726631
test(artifacts): enforce atomic framework bundles
aviggiano c12deac
fix(review): reconcile lifecycle handoff stages
aviggiano 37e064a
fix(runtime): seal exact prerequisite attempts
aviggiano 4304ea4
test(runtime): seal aggregation source authority
aviggiano 5db16c5
fix(strategies): reconcile dynamic artifact handoffs
aviggiano 281f359
fix(runtime): seal aggregation prerequisite chains
aviggiano 600b0db
test(runtime): align sealed finalization regressions
aviggiano 997eb5c
fix(artifacts): bound finding review contracts
aviggiano 806eb1e
fix(runtime): reconcile transitive aggregation authority
aviggiano a4da411
fix(runtime): manifest only verifier publications
aviggiano 0548266
fix(differential): authenticate artifact handoffs
aviggiano 660f82c
fix(runtime): reject unpublished manifest files
aviggiano bc4811d
fix(contracts): unify artifact path grammar
aviggiano fbe1930
merge(#481): authenticate declared JSON artifacts
aviggiano a0b4af9
fix(differential): enforce authenticated review handoffs
aviggiano dba3c20
merge(#486): type generated test bundles
aviggiano 21362f0
fix(differential): reject ambiguous semantic handoffs
aviggiano 4bdcf49
merge(#488): type property campaign results
aviggiano b0239c6
merge(#490): preserve typed review pipeline authority
aviggiano 61b6b9d
fix(prompts): protect topology-derived stage paths
aviggiano a5cc082
fix(validation): enforce canonical findings at scoring boundary
aviggiano e467ca4
fix(reporting): authenticate immutable run publications
aviggiano 52749e0
test(cli): remove stale publication snapshot binding
aviggiano 7a5b7aa
fix(reporting): seal recursive bundle authority
aviggiano 7bbb9dc
fix(evals): require verified report publication authority
aviggiano 74d0472
feat: bind strict JSON handoffs to immutable authority
aviggiano b0e530a
fix: preserve markdown prefixes in invariant evidence
aviggiano e214ed4
docs: inventory strict persisted contract migration
aviggiano 4402be9
docs: name benchmark lane contract versions
aviggiano dca9a08
fix(modal): clear stale retry result handoffs
aviggiano 946263d
test(runtime): align neutral fixture outputs
aviggiano e144547
perf(json): serve pinned validation from one compiled isolate
aviggiano ef1073d
fix(evals): give launched rows the trusted CLI entrypoint
aviggiano fa2f6f5
fix(runtime): let the runner table the generated workflow input
aviggiano 0850057
fix(evals): report detached launches against their own records
aviggiano 59a698b
fix(prompts): name the accepted invariant source-location forms
aviggiano 99995c9
fix(runtime): accept the workflow runner's event correlation envelope
aviggiano c430da7
fix(runtime): re-derive every publication a dependency producer makes
aviggiano db2b575
fix(runtime): ask the runner for the envelope its readers require
aviggiano 7a14a4d
fix(prompts): state the review contracts their verifiers enforce
aviggiano f536dbb
test(runtime): pin the derived reset identity for a failed workflow
aviggiano 0a36738
merge: take main's audit profiles and packaged topologies
aviggiano 73dfc55
Merge remote-tracking branch 'origin/main' into feat/439-strict-json-…
aviggiano 51cba5c
fix(prompts): make JSON schema validation producer-visible
aviggiano 44d6e5f
chore: integrate current main into strict JSON contracts
aviggiano 4de61b7
fix(runtime): seal module dependencies with external runners
aviggiano 61a6098
Merge main into feat/439-strict-json-contracts
aviggiano f4f6ee4
Merge published eval history from main
aviggiano 82ebebf
fix(runtime): bind current campaign timeout contract
aviggiano 2ca2bbb
fix(runtime): enforce v2-only campaign evidence
aviggiano 87eeabb
fix(evals): serialize portable benchmark suites
aviggiano 4e6195e
fix(evals): bound Smithers workflow run IDs
aviggiano 1374cde
fix(modal): seed pinned benchmark runner dependencies
aviggiano a88805e
fix(modal): preserve eval failure diagnostics
aviggiano e13a4c5
fix(modal): publish durable submission diagnostics
aviggiano 8015307
fix(modal): expose row launcher failures
aviggiano 2be215f
fix(modal): publish bounded eval errors
aviggiano 48cd37a
fix(evals): admit run audit lineage fields
aviggiano 433c2b4
Merge origin/main into feat/439-strict-json-contracts
aviggiano 37cef2c
fix(evals): migrate published history observations
aviggiano 3b8b48c
fix(artifacts): distinguish property findings from campaigns
aviggiano 9ba539c
fix(artifacts): scope campaign finding provenance
aviggiano b25f157
fix(artifacts): defer campaign membership to context
aviggiano 39d3059
fix(reports): expose canonical producer renderer
aviggiano d8f85e5
fix(prompts): harden smoke artifact completion
aviggiano 318724e
test(modal): budget model matrix validation
aviggiano 1cbf53e
fix(reports): restore canonical severity presentation
aviggiano 8210c73
fix(json): close strict contract review gaps
aviggiano 66d59f9
Merge origin/main into feat/439-strict-json-contracts
aviggiano File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
.ultrafuzz/prompts/_templates/output-contract/boundary-recipes.mdx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1 +1 @@ | ||
| `boundary-recipes.md` should be a markdown index of reproduction recipes. `boundary-recipes.json` must be a JSON object with `schema_version: "1.0"` and a `recipes` array. Each recipe should include `id`, `title`, `path`, and any known `finding_ids`, `property_ids`, or `summary`. Use an empty `recipes` array if no recipes were produced. | ||
| For every output declared with `Contract: ultrafuzz/boundary-recipes@1`, read the exact pinned schema named by `Validate against` in the central Ultrafuzz Output Contract and run the exact `Validation command` rendered beside that output. The declared path is authoritative; do not create a differently named structured artifact. That schema alone owns the JSON version, field names, types, required and optional members, and empty form. When a human-readable boundary-recipe companion is declared, keep it and the structured artifact semantically aligned with the same source-backed boundary recipes; this contextual correspondence is checked separately from JSON Schema validation. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1 +1 @@ | ||
| `findings.json` must be a JSON array. Use `[]` when there are no findings. Each finding object must include non-empty string fields `id`, `title`, `status`, `severity_guess`, `confidence`, and `summary`. Every finding's `severity_guess` must be exactly `High`, `Medium`, or `Low`, including findings that are or may become non-production records. `schema_version` is optional; omit it, or set it to `"1.0"` or `"ultrafuzz.finding.v1"`. `status` must be a non-empty lifecycle string. Prefer canonical values such as `candidate`, `needs-review`, `duplicate`, `false-positive`, `confirmed`, `fixed`, or `wont-fix` when they fit. If you include `triage_classification`, use one of `true-positive`, `false-positive`, `undetermined`, `incomplete-spec`, `harness-defect`, `repair-candidate`, `spec-gated`, or `defensive-hardening`. Use `severity_guess`; do not use `severity` as a replacement. If you include `evidence`, each entry may be a non-empty string reference or an object with optional non-empty string `kind` and `path` fields plus any other useful metadata. Object `path` fields must be safe relative file paths without anchors or line selectors. Put a section anchor in `fragment`, one source span in positive integer `line` and optional `end_line`, and disjoint spans in `line_ranges`, an array of at least two objects such as `[{"line":105,"end_line":107},{"line":154,"end_line":185}]`; every `end_line` must be no smaller than its `line`. Never emit a one-entry `line_ranges`, and never combine `line_ranges` with `line` or `end_line`. Keep independent explanatory prose in `detail`; never embed selectors into `path` or replace prose with them. | ||
| For every output declared with `Contract: ultrafuzz/findings@2`, read the exact pinned schema named by `Validate against` in the central Ultrafuzz Output Contract and run the exact `Validation command` rendered beside that output. The declared path is authoritative; do not create a differently named findings artifact. That schema alone owns the JSON version, field names, types, enums, required members, and empty form. Producer lanes make only a preliminary severity estimate; later severity review owns final severity. Cite evidence at its real source location, keep base paths free of embedded selectors, and keep independent explanation separate from verbatim or source-location data. Those ownership and evidence semantics remain required in addition to schema validation. |
11 changes: 9 additions & 2 deletions
11
.ultrafuzz/prompts/_templates/output-contract/generated-tests.mdx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,2 +1,9 @@ | ||
| Write generated test source files under `{{strategy_attempt_test_dir}}` and mirror the files under `{{generated_tests_dir}}`. | ||
| `generated-tests.json` must be a JSON object with `schema_version: "1.0"`, `run_id`, `node_id`, and `generated_tests`. Use `generated_tests` as the only file list. Each `generated_tests` entry must include `path` using the `generated-tests/<file>` prefix plus `language`, `framework`, and `description` when known. Use an empty `generated_tests` array if no tests were produced. | ||
| ## Generated-test Bundle Instructions | ||
|
|
||
| This node is a generated-test producer. Author runnable generated test source files under {{strategy_attempt_test_dir}}, mirror every declared bundle file under {{generated_tests_dir}}, and write the manifest to exactly {{generated_tests_manifest_path}}. | ||
|
|
||
| Read the exact pinned schema named by `Validate against` in the central Ultrafuzz Output Contract and run the exact `Validation command` rendered beside it. That schema alone owns the manifest's JSON version, field names, types, required and optional members, and empty form. | ||
|
|
||
| Bind `run_id` exactly to {{run_id}} and `node_id` exactly to {{logical_node_id}}. The node identity is the logical producer shown here, not a concrete attempt, loop, or model-fanout identity. Bind the bundle framework to the one checked-in native framework used by the whole atomic bundle. Never mix frameworks in one bundle or assign a separate framework to an individual companion. These run, producer, and repository-context bindings are checked beyond JSON Schema. | ||
|
|
||
| Classify only independently runnable tests and reproducers as generated tests. Classify imported helper libraries, mocks, fixtures, deployment scripts, text data fixtures, and other non-runnable dependencies as support files. Every declared companion, including data fixtures, must be strict UTF-8 text rather than binary data and must live beneath the artifact bundle, never at a workspace path. When no runnable test was produced, use the empty bundle defined by the schema while still binding its framework to the checked-in native framework. Before returning, validate after every declared companion is present, singly linked, regular, non-empty, and neither a symlink nor reachable through one. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't see
Validation commandanywhere