hyf_v1_jev.requirements.json (50607B)
1 { 2 "spec_id": "hyf_v1_jev", 3 "format_version": 1, 4 "requirements": [ 5 { 6 "id": "HYF-CORE-001", 7 "title": "Language and transport", 8 "status": "approved", 9 "requirement": "Keep the service core in Mojo and the canonical hyfd interface as stdio RPC; no Rust rewrite or HTTP ingress is authorized.", 10 "spec": "specs/ARCHITECTURE.md", 11 "verification_method": "architecture check and process integration", 12 "implementation_steps": [ 13 "S001", 14 "S012" 15 ], 16 "fixture_ids": [] 17 }, 18 { 19 "id": "HYF-CORE-002", 20 "title": "Business authority", 21 "status": "approved", 22 "requirement": "Keep authentication, durable business workflow, inventory, reservations, orders and notifications in owning application services; Hyf emits assessments without business mutations.", 23 "spec": "specs/ARCHITECTURE.md", 24 "verification_method": "architecture check, journey simulation and real-authority gate", 25 "implementation_steps": [ 26 "S014", 27 "S111", 28 "S131" 29 ], 30 "fixture_ids": [] 31 }, 32 { 33 "id": "HYF-CORE-003", 34 "title": "Typed independent layers", 35 "status": "approved", 36 "requirement": "Separate domain, application orchestration, provider adapter, runtime composition and transport; use explicit typed outcomes and no string-matched error control flow.", 37 "spec": "specs/ARCHITECTURE.md", 38 "verification_method": "unit tests and import-boundary review", 39 "implementation_steps": [ 40 "S007", 41 "S014", 42 "S016", 43 "S018", 44 "S039", 45 "S064", 46 "S065" 47 ], 48 "fixture_ids": [] 49 }, 50 { 51 "id": "HYF-CORE-004", 52 "title": "Spec-anchored scope", 53 "status": "approved", 54 "requirement": "Implement the three approved operations incrementally against durable specs without unrelated deferred features or speculative framework work.", 55 "spec": "specs/ARCHITECTURE.md", 56 "verification_method": "requirement traceability and per-commit review", 57 "implementation_steps": [ 58 "S002", 59 "S004", 60 "S010", 61 "S015", 62 "S137" 63 ], 64 "fixture_ids": [] 65 }, 66 { 67 "id": "HYF-CORE-005", 68 "title": "Compatibility", 69 "status": "approved", 70 "requirement": "Preserve existing supported wire behavior, capability semantics and max_local compatibility; new operations are additive or explicitly versioned.", 71 "spec": "specs/ARCHITECTURE.md", 72 "verification_method": "existing canonical wire fixtures and compatibility tests", 73 "implementation_steps": [ 74 "S003", 75 "S004", 76 "S053", 77 "S065", 78 "S101", 79 "S103", 80 "S104", 81 "S108", 82 "S109" 83 ], 84 "fixture_ids": [] 85 }, 86 { 87 "id": "HYF-CORE-006", 88 "title": "Repository authority", 89 "status": "approved", 90 "requirement": "Use repo-owned forge-agnostic validation, preserve applicable AGENTS and parent release authority; no capsule-local .github workflows.", 91 "spec": "specs/ARCHITECTURE.md", 92 "verification_method": "policy check and documented command review", 93 "implementation_steps": [ 94 "S001", 95 "S013", 96 "S014", 97 "S132" 98 ], 99 "fixture_ids": [] 100 }, 101 { 102 "id": "HYF-FARM-001", 103 "title": "Product-level claims", 104 "status": "approved", 105 "requirement": "Interpret multi-product updates as distinct evidence-backed claims rather than one global stock classification.", 106 "spec": "specs/PRODUCT_SPEC.md", 107 "verification_method": "domain and application fixtures", 108 "implementation_steps": [ 109 "S029", 110 "S067" 111 ], 112 "fixture_ids": [ 113 "FU001_multiple_crops", 114 "FU004_quantity_association" 115 ] 116 }, 117 { 118 "id": "HYF-FARM-002", 119 "title": "Claim status", 120 "status": "approved", 121 "requirement": "Distinguish reported offers, forecasts, unavailable supply, corrections and unclear status; never promote a forecast to confirmed inventory.", 122 "spec": "specs/PRODUCT_SPEC.md", 123 "verification_method": "domain and application fixtures", 124 "implementation_steps": [ 125 "S029", 126 "S067" 127 ], 128 "fixture_ids": [ 129 "FU001_multiple_crops", 130 "FU002_forecast", 131 "FU003_negation" 132 ] 133 }, 134 { 135 "id": "HYF-FARM-003", 136 "title": "Update operation semantics", 137 "status": "approved", 138 "requirement": "Differentiate addition, remaining balance, replacement, withdrawal and correction with a scoped target or unresolved operation.", 139 "spec": "specs/PRODUCT_SPEC.md", 140 "verification_method": "domain and journey fixtures", 141 "implementation_steps": [ 142 "S030", 143 "S069" 144 ], 145 "fixture_ids": [ 146 "FU005_addition", 147 "FU006_remaining", 148 "FU007_total" 149 ] 150 }, 151 { 152 "id": "HYF-FARM-004", 153 "title": "Unconfirmed quantities", 154 "status": "approved", 155 "requirement": "Reported quantity is not automatically verified unreserved stock; preserve approximation and uncertainty.", 156 "spec": "specs/PRODUCT_SPEC.md", 157 "verification_method": "domain and journey fixtures", 158 "implementation_steps": [ 159 "S022", 160 "S029", 161 "S068", 162 "S071" 163 ], 164 "fixture_ids": [ 165 "DM004_approximation_retained", 166 "FU002_forecast", 167 "FU010_unreserved_unknown", 168 "MT002_unknown_quantity" 169 ] 170 }, 171 { 172 "id": "HYF-FARM-005", 173 "title": "Review and material clarification", 174 "status": "approved", 175 "requirement": "Return reviewable proposed changes and material clarification targets; missing optional price does not block drafting while ambiguous withdrawal target blocks application.", 176 "spec": "specs/PRODUCT_SPEC.md", 177 "verification_method": "application and consumer-contract fixtures", 178 "implementation_steps": [ 179 "S031", 180 "S072", 181 "S111" 182 ], 183 "fixture_ids": [ 184 "FU009_optional_price", 185 "FU011_ambiguous_withdrawal", 186 "JR001_farm_review_handoff" 187 ] 188 }, 189 { 190 "id": "HYF-FARM-006", 191 "title": "Immutable clarification history", 192 "status": "approved", 193 "requirement": "Treat correction and clarification as explicit revisioned new evidence; do not overwrite original text or rely on hidden memory.", 194 "spec": "specs/PRODUCT_SPEC.md", 195 "verification_method": "domain and journey fixtures", 196 "implementation_steps": [ 197 "S032", 198 "S073", 199 "S079", 200 "S111" 201 ], 202 "fixture_ids": [ 203 "FU012_linked_clarification", 204 "FU013_stale_clarification", 205 "JR001_farm_review_handoff" 206 ] 207 }, 208 { 209 "id": "HYF-FARM-007", 210 "title": "Scoped withdrawal", 211 "status": "approved", 212 "requirement": "Do not expand a product/listing withdrawal to unrelated farm stock; require sufficient authorized target evidence.", 213 "spec": "specs/PRODUCT_SPEC.md", 214 "verification_method": "domain and security fixtures", 215 "implementation_steps": [ 216 "S030", 217 "S070" 218 ], 219 "fixture_ids": [ 220 "FU011_ambiguous_withdrawal" 221 ] 222 }, 223 { 224 "id": "HYF-FARM-008", 225 "title": "Unknown products", 226 "status": "approved", 227 "requirement": "Unknown or unsupported product terms remain unresolved instead of forced nearest-catalogue assignments.", 228 "spec": "specs/PRODUCT_SPEC.md", 229 "verification_method": "candidate-discovery and interpretation fixtures", 230 "implementation_steps": [ 231 "S028", 232 "S042", 233 "S075" 234 ], 235 "fixture_ids": [ 236 "FU008_unknown_product" 237 ] 238 }, 239 { 240 "id": "HYF-FARM-009", 241 "title": "No publication side effect", 242 "status": "approved", 243 "requirement": "farm_update.interpret returns proposals only; confirmation and version-checked idempotent application belong to the authority.", 244 "spec": "specs/PRODUCT_SPEC.md", 245 "verification_method": "architecture check and real-authority integration gate", 246 "implementation_steps": [ 247 "S069", 248 "S072", 249 "S074", 250 "S105", 251 "S111" 252 ], 253 "fixture_ids": [ 254 "FU009_optional_price", 255 "FU014_provider_timeout", 256 "FU015_invalid_answer", 257 "JR001_farm_review_handoff" 258 ] 259 }, 260 { 261 "id": "HYF-BUY-001", 262 "title": "Multiple demand lines", 263 "status": "approved", 264 "requirement": "buyer_request.interpret preserves multiple products and demand lines with correct condition applicability.", 265 "spec": "specs/PRODUCT_SPEC.md", 266 "verification_method": "domain and application fixtures", 267 "implementation_steps": [ 268 "S033", 269 "S075", 270 "S092", 271 "S106" 272 ], 273 "fixture_ids": [ 274 "BR001_multiple_lines", 275 "MT015_shared_lot_two_lines" 276 ] 277 }, 278 { 279 "id": "HYF-BUY-002", 280 "title": "Constraint strength", 281 "status": "approved", 282 "requirement": "Differentiate mandatory requirements, preferences, explicit exclusions and permitted alternatives, including negation.", 283 "spec": "specs/PRODUCT_SPEC.md", 284 "verification_method": "domain and application fixtures", 285 "implementation_steps": [ 286 "S033", 287 "S043", 288 "S076", 289 "S085", 290 "S106" 291 ], 292 "fixture_ids": [ 293 "BR002_fulfillment_negation", 294 "BR003_delivery_preference", 295 "BR004_seconds_permitted" 296 ] 297 }, 298 { 299 "id": "HYF-BUY-003", 300 "title": "Missing is not a decision", 301 "status": "approved", 302 "requirement": "Not-stated and contradictory conditions remain visible; missing substitution permission is not automatic permission or prohibition.", 303 "spec": "specs/PRODUCT_SPEC.md", 304 "verification_method": "domain and application fixtures", 305 "implementation_steps": [ 306 "S007", 307 "S018", 308 "S033", 309 "S076", 310 "S078", 311 "S080", 312 "S083", 313 "S093" 314 ], 315 "fixture_ids": [ 316 "DM002_unknown_not_zero", 317 "BR005_substitution_not_stated", 318 "BR006_conflicting_conditions", 319 "BR007_missing_quantity", 320 "BR009_provider_failure" 321 ] 322 }, 323 { 324 "id": "HYF-BUY-004", 325 "title": "Typed matching input", 326 "status": "approved", 327 "requirement": "buyer_request.match consumes the typed need and its revisions rather than reparsing rewritten query text.", 328 "spec": "specs/PRODUCT_SPEC.md", 329 "verification_method": "application integration", 330 "implementation_steps": [ 331 "S079", 332 "S081", 333 "S107", 334 "S112" 335 ], 336 "fixture_ids": [ 337 "BR008_no_reparse", 338 "JR002_buyer_match_revalidate" 339 ] 340 }, 341 { 342 "id": "HYF-BUY-005", 343 "title": "Reviewable intent", 344 "status": "approved", 345 "requirement": "Expose material unresolved fields and confirmations for the host without creating orders or hidden state.", 346 "spec": "specs/PRODUCT_SPEC.md", 347 "verification_method": "consumer-contract and journey fixtures", 348 "implementation_steps": [ 349 "S031", 350 "S078", 351 "S079", 352 "S106", 353 "S112" 354 ], 355 "fixture_ids": [ 356 "BR007_missing_quantity" 357 ] 358 }, 359 { 360 "id": "HYF-BUY-006", 361 "title": "Public surfaces", 362 "status": "approved", 363 "requirement": "Provide farm_update.interpret, buyer_request.interpret and buyer_request.match with stable product semantics, not a generic Jev endpoint.", 364 "spec": "specs/PRODUCT_SPEC.md", 365 "verification_method": "API schema, discovery and process tests", 366 "implementation_steps": [ 367 "S004", 368 "S053", 369 "S104", 370 "S105", 371 "S134" 372 ], 373 "fixture_ids": [] 374 }, 375 { 376 "id": "HYF-DATA-001", 377 "title": "Trusted source identity", 378 "status": "approved", 379 "requirement": "Original text, actor/source IDs, revisions and timestamps come from trusted application context and cannot be generated or overridden by provider output.", 380 "spec": "specs/DATA_MODEL.md", 381 "verification_method": "unit, adapter and security fixtures", 382 "implementation_steps": [ 383 "S006", 384 "S016", 385 "S017", 386 "S045", 387 "S049", 388 "S066", 389 "S115" 390 ], 391 "fixture_ids": [] 392 }, 393 { 394 "id": "HYF-DATA-002", 395 "title": "Evidence integrity", 396 "status": "approved", 397 "requirement": "Every interpreted field links to authorized evidence or declared deterministic derivation; validate exact source revisions and span-offset conventions.", 398 "spec": "specs/DATA_MODEL.md", 399 "verification_method": "Unicode/span/reference fixtures", 400 "implementation_steps": [ 401 "S006", 402 "S017", 403 "S042", 404 "S068", 405 "S075" 406 ], 407 "fixture_ids": [ 408 "DM014_unicode_evidence", 409 "DM015_wrong_revision_evidence", 410 "FU004_quantity_association" 411 ] 412 }, 413 { 414 "id": "HYF-DATA-003", 415 "title": "Exact supported values", 416 "status": "approved", 417 "requirement": "Use explicit bounded exact decimal/fixed arithmetic where needed; define overflow, precision and rounding, and keep unknown distinct from zero.", 418 "spec": "specs/DATA_MODEL.md", 419 "verification_method": "unit and property tests", 420 "implementation_steps": [ 421 "S005", 422 "S018", 423 "S019", 424 "S020", 425 "S023", 426 "S077", 427 "S088", 428 "S118" 429 ], 430 "fixture_ids": [ 431 "DM001_exact_quantity", 432 "DM002_unknown_not_zero", 433 "DM003_mass_conversion", 434 "DM016_numeric_overflow", 435 "MT003_exact_available" 436 ] 437 }, 438 { 439 "id": "HYF-DATA-004", 440 "title": "Unit and pack semantics", 441 "status": "approved", 442 "requirement": "Normalize only compatible dimensions and trusted pack conversions; unknown pack size remains unresolved.", 443 "spec": "specs/DATA_MODEL.md", 444 "verification_method": "unit and matching fixtures", 445 "implementation_steps": [ 446 "S005", 447 "S020", 448 "S021", 449 "S068", 450 "S077" 451 ], 452 "fixture_ids": [ 453 "DM003_mass_conversion", 454 "DM005_missing_pack_weight", 455 "DM006_wrong_product_pack", 456 "DM007_dimension_mismatch" 457 ] 458 }, 459 { 460 "id": "HYF-DATA-005", 461 "title": "Approximation semantics", 462 "status": "approved", 463 "requirement": "Preserve approximate wording without inventing numerical bounds or treating conversion precision as source precision.", 464 "spec": "specs/DATA_MODEL.md", 465 "verification_method": "unit and interpretation fixtures", 466 "implementation_steps": [ 467 "S005", 468 "S022" 469 ], 470 "fixture_ids": [ 471 "DM004_approximation_retained" 472 ] 473 }, 474 { 475 "id": "HYF-DATA-006", 476 "title": "Money semantics", 477 "status": "approved", 478 "requirement": "Keep amount, currency, price basis, fees and minimum-order conditions distinct; missing price is unknown.", 479 "spec": "specs/DATA_MODEL.md", 480 "verification_method": "unit and matching fixtures", 481 "implementation_steps": [ 482 "S005", 483 "S023", 484 "S077", 485 "S087" 486 ], 487 "fixture_ids": [ 488 "DM008_money_unknown", 489 "DM009_currency_mismatch" 490 ] 491 }, 492 { 493 "id": "HYF-DATA-007", 494 "title": "Source-anchored time", 495 "status": "approved", 496 "requirement": "Resolve dates from source time and known zone/locale, preserve date-only/ambiguity semantics, and keep wall and monotonic time roles separate.", 497 "spec": "specs/DATA_MODEL.md", 498 "verification_method": "time and replay fixtures", 499 "implementation_steps": [ 500 "S006", 501 "S024", 502 "S025", 503 "S026", 504 "S071", 505 "S077", 506 "S086" 507 ], 508 "fixture_ids": [ 509 "DM010_relative_date_replay", 510 "DM011_missing_zone", 511 "DM012_ambiguous_local_time", 512 "MT010_nonoverlap" 513 ] 514 }, 515 { 516 "id": "HYF-DATA-008", 517 "title": "Freshness semantics", 518 "status": "approved", 519 "requirement": "Separate record recency, harvest age, availability and verification time; one cannot stand in for another.", 520 "spec": "specs/DATA_MODEL.md", 521 "verification_method": "domain and matching fixtures", 522 "implementation_steps": [ 523 "S006", 524 "S024", 525 "S027", 526 "S086" 527 ], 528 "fixture_ids": [ 529 "DM013_record_not_harvest" 530 ] 531 }, 532 { 533 "id": "HYF-DATA-009", 534 "title": "Version provenance", 535 "status": "approved", 536 "requirement": "Record actual source/need/supply, schema, taxonomy, normalization, model, question and policy versions used.", 537 "spec": "specs/DATA_MODEL.md", 538 "verification_method": "domain, adapter and process fixtures", 539 "implementation_steps": [ 540 "S011", 541 "S016", 542 "S021", 543 "S026", 544 "S028", 545 "S034", 546 "S038", 547 "S049", 548 "S117" 549 ], 550 "fixture_ids": [] 551 }, 552 { 553 "id": "HYF-DATA-010", 554 "title": "Conflicts and revisions", 555 "status": "approved", 556 "requirement": "Detect conflicting or stale records and preserve correction links rather than last-response-wins; external writes use expected versions.", 557 "spec": "specs/DATA_MODEL.md", 558 "verification_method": "domain fixtures and real-authority gate", 559 "implementation_steps": [ 560 "S006", 561 "S030", 562 "S032", 563 "S034", 564 "S070", 565 "S073", 566 "S082", 567 "S113" 568 ], 569 "fixture_ids": [ 570 "DM015_wrong_revision_evidence", 571 "FU012_linked_clarification", 572 "FU013_stale_clarification", 573 "MT014_conflicting_revisions", 574 "JR003_duplicate_acceptance", 575 "JR004_stale_acceptance" 576 ] 577 }, 578 { 579 "id": "HYF-MATCH-001", 580 "title": "Three-way checks", 581 "status": "approved", 582 "requirement": "Each applicable mandatory check is pass, fail or unknown; any fail makes ineligible, otherwise unknown makes conditional, otherwise eligible.", 583 "spec": "specs/DATA_MODEL.md", 584 "verification_method": "unit, property and application fixtures", 585 "implementation_steps": [ 586 "S007", 587 "S035", 588 "S083", 589 "S084", 590 "S085", 591 "S086", 592 "S087", 593 "S088", 594 "S089", 595 "S100", 596 "S118" 597 ], 598 "fixture_ids": [ 599 "MT001_shortage", 600 "MT002_unknown_quantity", 601 "MT003_exact_available", 602 "MT005_fail_dominates_unknown", 603 "MT006_unknown_dominates_pass", 604 "MT007_optional_missing", 605 "MT008_delivery_mismatch", 606 "MT009_unknown_area", 607 "MT010_nonoverlap" 608 ] 609 }, 610 { 611 "id": "HYF-MATCH-002", 612 "title": "Mandatory precedence", 613 "status": "approved", 614 "requirement": "No semantic score or preference can override a failed mandatory condition; optional unstated preferences do not create blockers.", 615 "spec": "specs/DATA_MODEL.md", 616 "verification_method": "property and adversarial fixtures", 617 "implementation_steps": [ 618 "S035", 619 "S083", 620 "S085", 621 "S089", 622 "S098", 623 "S118" 624 ], 625 "fixture_ids": [ 626 "MT001_shortage", 627 "MT004_wrong_product_high_score", 628 "MT007_optional_missing" 629 ] 630 }, 631 { 632 "id": "HYF-MATCH-003", 633 "title": "Snapshot scope", 634 "status": "approved", 635 "requirement": "Evaluate only bounded authorized supplied records and identify exact revisions and coverage limitations.", 636 "spec": "specs/DATA_MODEL.md", 637 "verification_method": "domain, security and process fixtures", 638 "implementation_steps": [ 639 "S027", 640 "S034", 641 "S037", 642 "S081", 643 "S107", 644 "S114" 645 ], 646 "fixture_ids": [ 647 "SC001_cross_tenant" 648 ] 649 }, 650 { 651 "id": "HYF-MATCH-004", 652 "title": "Supported plan mode", 653 "status": "approved", 654 "requirement": "Produce bounded single-supplier compatible-lot plans; label unsupported multi-supplier/planner modes rather than global unavailability.", 655 "spec": "specs/DATA_MODEL.md", 656 "verification_method": "allocation and coverage fixtures", 657 "implementation_steps": [ 658 "S036", 659 "S090", 660 "S091", 661 "S094", 662 "S107", 663 "S126" 664 ], 665 "fixture_ids": [ 666 "MT012_two_compatible_lots", 667 "MT017_multi_supplier_unsupported" 668 ] 669 }, 670 { 671 "id": "HYF-MATCH-005", 672 "title": "Allocation conservation", 673 "status": "approved", 674 "requirement": "Within a plan, allocations across all lines cannot exceed underlying lot stock; reject/resolve duplicate conflicting records.", 675 "spec": "specs/DATA_MODEL.md", 676 "verification_method": "unit, property and independent-oracle tests", 677 "implementation_steps": [ 678 "S036", 679 "S082", 680 "S091", 681 "S092", 682 "S119" 683 ], 684 "fixture_ids": [ 685 "MT012_two_compatible_lots", 686 "MT013_duplicate_lot", 687 "MT014_conflicting_revisions", 688 "MT015_shared_lot_two_lines" 689 ] 690 }, 691 { 692 "id": "HYF-MATCH-006", 693 "title": "Partial fulfillment policy", 694 "status": "approved", 695 "requirement": "Shortage fails when partial fulfillment is disallowed; any partial plan requires explicit buyer permission and clear uncovered demand.", 696 "spec": "specs/DATA_MODEL.md", 697 "verification_method": "allocation and application fixtures", 698 "implementation_steps": [ 699 "S088", 700 "S093" 701 ], 702 "fixture_ids": [ 703 "MT001_shortage", 704 "MT016_partial_allowed" 705 ] 706 }, 707 { 708 "id": "HYF-MATCH-007", 709 "title": "Alternative plan semantics", 710 "status": "approved", 711 "requirement": "Alternative plans are not simultaneous commitments even if they reuse stock; output is never a reservation.", 712 "spec": "specs/DATA_MODEL.md", 713 "verification_method": "allocation and consumer-contract fixtures", 714 "implementation_steps": [ 715 "S036", 716 "S094", 717 "S099", 718 "S112" 719 ], 720 "fixture_ids": [ 721 "MT019_alternative_plans" 722 ] 723 }, 724 { 725 "id": "HYF-MATCH-008", 726 "title": "Evidence before scoring", 727 "status": "approved", 728 "requirement": "Separate evidence sufficiency from suitability; do not use unknown as a score midpoint or promote uncertain mandatory premises silently.", 729 "spec": "specs/DATA_MODEL.md", 730 "verification_method": "domain and provider fixtures", 731 "implementation_steps": [ 732 "S071", 733 "S084", 734 "S090", 735 "S095", 736 "S096" 737 ], 738 "fixture_ids": [ 739 "MT011_certification_unverified", 740 "MT020_unknown_not_midpoint" 741 ] 742 }, 743 { 744 "id": "HYF-MATCH-009", 745 "title": "Stable preference composition", 746 "status": "approved", 747 "requirement": "Normalize rubric scores deliberately, compose versioned preferences and use stable deterministic tie-breaking without representing success probabilities.", 748 "spec": "specs/DATA_MODEL.md", 749 "verification_method": "unit/property/ranking fixtures", 750 "implementation_steps": [ 751 "S097", 752 "S098", 753 "S119" 754 ], 755 "fixture_ids": [ 756 "MT021_score_normalization", 757 "MT022_stable_ties" 758 ] 759 }, 760 { 761 "id": "HYF-MATCH-010", 762 "title": "No-market-claim overreach", 763 "status": "approved", 764 "requirement": "No eligible result means none within supplied/evaluated scope; retrieval truncation and unsupported planning are explicit limitations.", 765 "spec": "specs/DATA_MODEL.md", 766 "verification_method": "coverage and consumer-contract fixtures", 767 "implementation_steps": [ 768 "S037", 769 "S094", 770 "S099", 771 "S134" 772 ], 773 "fixture_ids": [ 774 "MT017_multi_supplier_unsupported", 775 "MT018_truncated_retrieval" 776 ] 777 }, 778 { 779 "id": "HYF-MATCH-011", 780 "title": "Revalidate before commitment", 781 "status": "approved", 782 "requirement": "Owning service must revalidate current inventory and reserve atomically under its transaction policy; Hyf does not implement that authority.", 783 "spec": "specs/DATA_MODEL.md", 784 "verification_method": "journey simulation and real-authority gate", 785 "implementation_steps": [ 786 "S113", 787 "S131" 788 ], 789 "fixture_ids": [ 790 "JR002_buyer_match_revalidate", 791 "JR005_stock_race" 792 ] 793 }, 794 { 795 "id": "HYF-JEV-001", 796 "title": "Dedicated provider adapter", 797 "status": "approved", 798 "requirement": "Use a dedicated TypeSafe evaluation adapter rather than repointing max_local chat completions; keep provider wire types out of public business contracts.", 799 "spec": "specs/PROVIDER_JEV.md", 800 "verification_method": "adapter and architecture tests", 801 "implementation_steps": [ 802 "S039", 803 "S044", 804 "S052", 805 "S060" 806 ], 807 "fixture_ids": [] 808 }, 809 { 810 "id": "HYF-JEV-002", 811 "title": "Bounded interpretation", 812 "status": "approved", 813 "requirement": "Use versioned bounded choices/propositions/scores; candidate discovery and value normalization remain explicit stages.", 814 "spec": "specs/PROVIDER_JEV.md", 815 "verification_method": "builder, domain and live-evaluation gates", 816 "implementation_steps": [ 817 "S039", 818 "S042", 819 "S043", 820 "S044", 821 "S067", 822 "S095" 823 ], 824 "fixture_ids": [] 825 }, 826 { 827 "id": "HYF-JEV-003", 828 "title": "Correct question dependencies", 829 "status": "approved", 830 "requirement": "Only batch independent questions against relevant shared state; dependent stages are separate and correlated outputs are not independent corroboration.", 831 "spec": "specs/PROVIDER_JEV.md", 832 "verification_method": "request-plan and evaluation review", 833 "implementation_steps": [ 834 "S051" 835 ], 836 "fixture_ids": [] 837 }, 838 { 839 "id": "HYF-JEV-004", 840 "title": "Strict answer contracts", 841 "status": "approved", 842 "requirement": "Validate expected answer IDs/types, choices, finite values, probability distributions, rubric mapping and actual model version; fail safely on invalid responses.", 843 "spec": "specs/PROVIDER_JEV.md", 844 "verification_method": "positive/negative adapter fixtures", 845 "implementation_steps": [ 846 "S045", 847 "S046", 848 "S047", 849 "S059", 850 "S121" 851 ], 852 "fixture_ids": [ 853 "PV001_valid_all_types", 854 "PV002_missing_answer", 855 "PV003_extra_answer", 856 "PV004_wrong_type", 857 "PV005_unknown_choice", 858 "PV006_bad_distribution_sum", 859 "PV007_score_out_of_range", 860 "PV008_wrong_legend", 861 "PV009_model_mismatch", 862 "PV010_noul_out_of_range", 863 "PV011_missing_level", 864 "PV012_confidence_out_of_range", 865 "PV021_invalid_json_bytes", 866 "PV022_nan_bytes" 867 ] 868 }, 869 { 870 "id": "HYF-JEV-005", 871 "title": "Score range handling", 872 "status": "approved", 873 "requirement": "Handle zero-indexed score levels and normalize by the actual rubric; Noul has no required confidence field.", 874 "spec": "specs/PROVIDER_JEV.md", 875 "verification_method": "adapter and numeric fixtures", 876 "implementation_steps": [ 877 "S045", 878 "S046", 879 "S049", 880 "S097" 881 ], 882 "fixture_ids": [ 883 "MT021_score_normalization", 884 "PV001_valid_all_types", 885 "PV002_missing_answer", 886 "PV003_extra_answer", 887 "PV004_wrong_type", 888 "PV005_unknown_choice", 889 "PV006_bad_distribution_sum", 890 "PV007_score_out_of_range", 891 "PV008_wrong_legend", 892 "PV009_model_mismatch", 893 "PV010_noul_out_of_range", 894 "PV011_missing_level", 895 "PV012_confidence_out_of_range" 896 ] 897 }, 898 { 899 "id": "HYF-JEV-006", 900 "title": "Pinned evaluation configuration", 901 "status": "approved", 902 "requirement": "Pin model/question/policy/taxonomy/schema versions and evaluate upgrades explicitly; never follow aliases silently in production.", 903 "spec": "specs/PROVIDER_JEV.md", 904 "verification_method": "configuration, provenance and model-promotion tests", 905 "implementation_steps": [ 906 "S043", 907 "S047", 908 "S127", 909 "S133" 910 ], 911 "fixture_ids": [] 912 }, 913 { 914 "id": "HYF-JEV-007", 915 "title": "Semantic not arithmetic authority", 916 "status": "approved", 917 "requirement": "Keep arithmetic/date resolution/authorization and all business actions out of model judgments.", 918 "spec": "specs/PROVIDER_JEV.md", 919 "verification_method": "architecture, domain and adversarial fixtures", 920 "implementation_steps": [ 921 "S096" 922 ], 923 "fixture_ids": [] 924 }, 925 { 926 "id": "HYF-JEV-008", 927 "title": "Safe provider failure", 928 "status": "approved", 929 "requirement": "Interpretation failures remain unconfirmed/unresolved or explicit errors; only semantically safe labeled ranking fallback is allowed.", 930 "spec": "specs/PROVIDER_JEV.md", 931 "verification_method": "application and provider-failure fixtures", 932 "implementation_steps": [ 933 "S007", 934 "S038", 935 "S048", 936 "S062", 937 "S065", 938 "S074", 939 "S080", 940 "S100", 941 "S108", 942 "S133" 943 ], 944 "fixture_ids": [ 945 "FU014_provider_timeout", 946 "FU015_invalid_answer", 947 "BR009_provider_failure", 948 "MT023_ranking_outage", 949 "PV013_auth_no_retry", 950 "PV014_validation_no_retry", 951 "PV015_capacity_retry", 952 "PV016_overload_retry", 953 "SC012_provider_disabled" 954 ] 955 }, 956 { 957 "id": "HYF-JEV-009", 958 "title": "Provider request minimization", 959 "status": "approved", 960 "requirement": "Send only authorized relevant content, with server-controlled instructions/model/configuration and bounded question/candidate/state sizes.", 961 "spec": "specs/PROVIDER_JEV.md", 962 "verification_method": "request-contract and privacy fixtures", 963 "implementation_steps": [ 964 "S044", 965 "S050", 966 "S051", 967 "S089", 968 "S096" 969 ], 970 "fixture_ids": [ 971 "PV020_wrong_request_state", 972 "SC004_state_minimization" 973 ] 974 }, 975 { 976 "id": "HYF-JEV-010", 977 "title": "Live-model gate", 978 "status": "approved", 979 "requirement": "Separate opt-in account smoke and real raw-input semantic evaluation from deterministic software correctness; use independent labels and controlled holdouts.", 980 "spec": "specs/PROVIDER_JEV.md", 981 "verification_method": "evaluation harness and external release evidence", 982 "implementation_steps": [ 983 "S127", 984 "S128", 985 "S129" 986 ], 987 "fixture_ids": [] 988 }, 989 { 990 "id": "HYF-RUN-001", 991 "title": "Persistent framing", 992 "status": "approved", 993 "requirement": "Process multiple newline-delimited JSON requests until EOF, handle fragmentation/coalescing and flush responses without stdout diagnostics.", 994 "spec": "specs/NONFUNCTIONAL_REQUIREMENTS.md", 995 "verification_method": "stdio process fixtures", 996 "implementation_steps": [ 997 "S101", 998 "S102", 999 "S110" 1000 ], 1001 "fixture_ids": [ 1002 "PR001_persistent", 1003 "PR002_valid_invalid_valid", 1004 "PR003_fragmented", 1005 "PR004_coalesced", 1006 "PR005_escaped_newline", 1007 "PR006_size_limit", 1008 "PR007_partial_eof", 1009 "PR008_stderr_separation", 1010 "PR009_shutdown_cleanup", 1011 "PR010_one_inflight" 1012 ] 1013 }, 1014 { 1015 "id": "HYF-RUN-002", 1016 "title": "Recovery and limits", 1017 "status": "approved", 1018 "requirement": "Recover after malformed frames when boundaries are known; bound input/depth/output and fail or close safely on unrecoverable framing.", 1019 "spec": "specs/NONFUNCTIONAL_REQUIREMENTS.md", 1020 "verification_method": "raw protocol and resource fixtures", 1021 "implementation_steps": [ 1022 "S082", 1023 "S098", 1024 "S101", 1025 "S103", 1026 "S121", 1027 "S126" 1028 ], 1029 "fixture_ids": [ 1030 "PR001_persistent", 1031 "PR002_valid_invalid_valid", 1032 "PR003_fragmented", 1033 "PR004_coalesced", 1034 "PR005_escaped_newline", 1035 "PR006_size_limit", 1036 "PR007_partial_eof", 1037 "PR008_stderr_separation", 1038 "PR009_shutdown_cleanup", 1039 "PR010_one_inflight" 1040 ] 1041 }, 1042 { 1043 "id": "HYF-RUN-003", 1044 "title": "Single in-flight request", 1045 "status": "approved", 1046 "requirement": "Initially support one in-flight business request per process with host-owned bounded pooling; do not invent unnecessary multiplexing.", 1047 "spec": "specs/NONFUNCTIONAL_REQUIREMENTS.md", 1048 "verification_method": "process and lifecycle tests", 1049 "implementation_steps": [ 1050 "S102" 1051 ], 1052 "fixture_ids": [] 1053 }, 1054 { 1055 "id": "HYF-RUN-004", 1056 "title": "Shared deadline", 1057 "status": "approved", 1058 "requirement": "All phases consume one server-capped remaining budget using monotonic elapsed time; host queuing does not reset it.", 1059 "spec": "specs/NONFUNCTIONAL_REQUIREMENTS.md", 1060 "verification_method": "virtual-time and process tests", 1061 "implementation_steps": [ 1062 "S040", 1063 "S051", 1064 "S055", 1065 "S060", 1066 "S062", 1067 "S074", 1068 "S080" 1069 ], 1070 "fixture_ids": [ 1071 "PV017_no_remaining_budget", 1072 "RT001_shared_budget" 1073 ] 1074 }, 1075 { 1076 "id": "HYF-RUN-005", 1077 "title": "Bounded retries and circuits", 1078 "status": "approved", 1079 "requirement": "Classify permanent/transient errors, bound retries/backoff/queues, avoid per-request health calls, and distinguish liveness from provider readiness.", 1080 "spec": "specs/NONFUNCTIONAL_REQUIREMENTS.md", 1081 "verification_method": "virtual-time and transport fixtures", 1082 "implementation_steps": [ 1083 "S048", 1084 "S056", 1085 "S057", 1086 "S062" 1087 ], 1088 "fixture_ids": [ 1089 "PV013_auth_no_retry", 1090 "PV014_validation_no_retry", 1091 "PV015_capacity_retry", 1092 "PV016_overload_retry", 1093 "PV017_no_remaining_budget", 1094 "RT002_circuit_liveness" 1095 ] 1096 }, 1097 { 1098 "id": "HYF-RUN-006", 1099 "title": "Configuration and flags", 1100 "status": "approved", 1101 "requirement": "Separate implementation support, provider configuration, permission, readiness and per-operation enablement; validate invalid combinations.", 1102 "spec": "specs/NONFUNCTIONAL_REQUIREMENTS.md", 1103 "verification_method": "runtime/discovery matrix tests", 1104 "implementation_steps": [ 1105 "S052", 1106 "S053", 1107 "S054", 1108 "S064", 1109 "S104", 1110 "S108", 1111 "S136" 1112 ], 1113 "fixture_ids": [ 1114 "SC012_provider_disabled" 1115 ] 1116 }, 1117 { 1118 "id": "HYF-RUN-007", 1119 "title": "Cleanup and cancellation", 1120 "status": "approved", 1121 "requirement": "Bound waits, close/reap resources and report local cancellation honestly without claiming remote computation or charges stopped.", 1122 "spec": "specs/NONFUNCTIONAL_REQUIREMENTS.md", 1123 "verification_method": "transport, process and soak tests", 1124 "implementation_steps": [ 1125 "S059", 1126 "S063", 1127 "S102", 1128 "S110", 1129 "S125" 1130 ], 1131 "fixture_ids": [ 1132 "PR001_persistent", 1133 "PR002_valid_invalid_valid", 1134 "PR003_fragmented", 1135 "PR004_coalesced", 1136 "PR005_escaped_newline", 1137 "PR006_size_limit", 1138 "PR007_partial_eof", 1139 "PR008_stderr_separation", 1140 "PR009_shutdown_cleanup", 1141 "PR010_one_inflight", 1142 "RT003_resource_soak" 1143 ] 1144 }, 1145 { 1146 "id": "HYF-RUN-008", 1147 "title": "Observability", 1148 "status": "approved", 1149 "requirement": "Emit safe bounded reason/trace/version/degraded diagnostics; no secrets or unrestricted private text, no unbounded metric label cardinality.", 1150 "spec": "specs/NONFUNCTIONAL_REQUIREMENTS.md", 1151 "verification_method": "redaction and telemetry fixtures", 1152 "implementation_steps": [ 1153 "S038", 1154 "S048", 1155 "S057", 1156 "S100", 1157 "S116" 1158 ], 1159 "fixture_ids": [ 1160 "MT023_ranking_outage", 1161 "SC005_secret_redaction" 1162 ] 1163 }, 1164 { 1165 "id": "HYF-RUN-009", 1166 "title": "Optional caching policy", 1167 "status": "approved", 1168 "requirement": "Caching is optional; if introduced it is bounded, tenant/source/context/version keyed and invalidated safely; it never implies reservation.", 1169 "spec": "specs/NONFUNCTIONAL_REQUIREMENTS.md", 1170 "verification_method": "conditional cache tests or no-cache architecture evidence", 1171 "implementation_steps": [ 1172 "S117" 1173 ], 1174 "fixture_ids": [ 1175 "RT004_no_cache_or_isolated_cache" 1176 ] 1177 }, 1178 { 1179 "id": "HYF-RUN-010", 1180 "title": "Measured objectives", 1181 "status": "approved", 1182 "requirement": "Freeze resource/SLO/cost/quality budgets from measured pilot evidence before launch; no fabricated numeric acceptance claims.", 1183 "spec": "specs/NONFUNCTIONAL_REQUIREMENTS.md", 1184 "verification_method": "load reports and owner release gate", 1185 "implementation_steps": [ 1186 "S055", 1187 "S125", 1188 "S126", 1189 "S130" 1190 ], 1191 "fixture_ids": [ 1192 "RT003_resource_soak" 1193 ] 1194 }, 1195 { 1196 "id": "HYF-SEC-001", 1197 "title": "Trusted host authorization", 1198 "status": "approved", 1199 "requirement": "A consumer string or end-user tenant claim is not authentication; use the real host trust boundary and reject inconsistent/cross-scope context.", 1200 "spec": "specs/NONFUNCTIONAL_REQUIREMENTS.md", 1201 "verification_method": "security fixtures and deployment gate", 1202 "implementation_steps": [ 1203 "S066", 1204 "S070", 1205 "S081", 1206 "S114", 1207 "S117" 1208 ], 1209 "fixture_ids": [ 1210 "SC001_cross_tenant", 1211 "SC002_consumer_not_auth" 1212 ] 1213 }, 1214 { 1215 "id": "HYF-SEC-002", 1216 "title": "Source text is data", 1217 "status": "approved", 1218 "requirement": "Source text cannot select endpoints, alter policy, fetch arbitrary URLs, invoke tools or elevate privileges.", 1219 "spec": "specs/NONFUNCTIONAL_REQUIREMENTS.md", 1220 "verification_method": "injection/adversarial fixtures", 1221 "implementation_steps": [ 1222 "S066", 1223 "S115" 1224 ], 1225 "fixture_ids": [ 1226 "SC003_instruction_in_source", 1227 "SC010_request_endpoint_override" 1228 ] 1229 }, 1230 { 1231 "id": "HYF-SEC-003", 1232 "title": "External HTTPS", 1233 "status": "approved", 1234 "requirement": "External Jev transport validates TLS certificates/hostnames and redirect credential policy; local test overrides cannot weaken production behavior.", 1235 "spec": "specs/NONFUNCTIONAL_REQUIREMENTS.md", 1236 "verification_method": "local TLS and configuration fixtures", 1237 "implementation_steps": [ 1238 "S060", 1239 "S061" 1240 ], 1241 "fixture_ids": [ 1242 "SC006_external_plaintext", 1243 "SC007_wrong_tls_host", 1244 "SC008_untrusted_tls_ca", 1245 "SC009_redirect_secret" 1246 ] 1247 }, 1248 { 1249 "id": "HYF-SEC-004", 1250 "title": "Privacy and retention", 1251 "status": "approved", 1252 "requirement": "Minimize provider payloads and evidence disclosure; respect host/provider approved retention instead of indefinite raw audit copies.", 1253 "spec": "specs/NONFUNCTIONAL_REQUIREMENTS.md", 1254 "verification_method": "privacy fixtures and account release gate", 1255 "implementation_steps": [ 1256 "S050", 1257 "S099", 1258 "S114", 1259 "S116", 1260 "S129" 1261 ], 1262 "fixture_ids": [ 1263 "SC004_state_minimization" 1264 ] 1265 }, 1266 { 1267 "id": "HYF-SEC-005", 1268 "title": "Secrets and configuration", 1269 "status": "approved", 1270 "requirement": "Credentials/endpoints/model are server-controlled, sanitized in tests and never leaked in errors/logs or committed as real secrets.", 1271 "spec": "specs/NONFUNCTIONAL_REQUIREMENTS.md", 1272 "verification_method": "secret/redaction/configuration checks", 1273 "implementation_steps": [ 1274 "S050", 1275 "S052", 1276 "S054", 1277 "S061", 1278 "S116", 1279 "S122" 1280 ], 1281 "fixture_ids": [ 1282 "SC005_secret_redaction", 1283 "SC009_redirect_secret", 1284 "SC010_request_endpoint_override", 1285 "SC011_offline_secret_env" 1286 ] 1287 }, 1288 { 1289 "id": "HYF-TEST-001", 1290 "title": "Canonical fixtures", 1291 "status": "approved", 1292 "requirement": "Version acceptance cases with requirements, fixed context, expectations, forbidden behavior and explicit synthetic/recorded provenance.", 1293 "spec": "specs/PRODUCT_SPEC.md", 1294 "verification_method": "fixture-schema and traceability checks", 1295 "implementation_steps": [ 1296 "S003", 1297 "S008", 1298 "S009" 1299 ], 1300 "fixture_ids": [] 1301 }, 1302 { 1303 "id": "HYF-TEST-002", 1304 "title": "One shared authority", 1305 "status": "approved", 1306 "requirement": "Preserve declared parent shared-wire authority with offline local mirror; keep Hyf-local test families separate.", 1307 "spec": "specs/PRODUCT_SPEC.md", 1308 "verification_method": "manifest/sync and parent gate", 1309 "implementation_steps": [ 1310 "S003", 1311 "S109", 1312 "S132" 1313 ], 1314 "fixture_ids": [] 1315 }, 1316 { 1317 "id": "HYF-TEST-003", 1318 "title": "Fixture validator integrity", 1319 "status": "approved", 1320 "requirement": "Reject duplicate IDs, missing references/files, unknown assertion operators and empty expectations; test the validator negatively.", 1321 "spec": "specs/PRODUCT_SPEC.md", 1322 "verification_method": "validator unit tests", 1323 "implementation_steps": [ 1324 "S009", 1325 "S010", 1326 "S124" 1327 ], 1328 "fixture_ids": [] 1329 }, 1330 { 1331 "id": "HYF-TEST-004", 1332 "title": "Hermetic local execution", 1333 "status": "approved", 1334 "requirement": "After dependency provisioning, default build/tests require no external network, account, secrets, GPU, model server or parent checkout.", 1335 "spec": "specs/PRODUCT_SPEC.md", 1336 "verification_method": "offline isolation and process integration", 1337 "implementation_steps": [ 1338 "S061", 1339 "S122", 1340 "S136" 1341 ], 1342 "fixture_ids": [ 1343 "SC011_offline_secret_env" 1344 ] 1345 }, 1346 { 1347 "id": "HYF-TEST-005", 1348 "title": "Production path coverage", 1349 "status": "approved", 1350 "requirement": "Exercise actual domain/application/adapter/HTTP/stdio code using controlled external boundaries rather than a parallel fake service.", 1351 "spec": "specs/PRODUCT_SPEC.md", 1352 "verification_method": "unit/loopback/process suites", 1353 "implementation_steps": [ 1354 "S041", 1355 "S058", 1356 "S064", 1357 "S105", 1358 "S106", 1359 "S107" 1360 ], 1361 "fixture_ids": [] 1362 }, 1363 { 1364 "id": "HYF-TEST-006", 1365 "title": "Strict scripted provider", 1366 "status": "approved", 1367 "requirement": "Validate outbound request semantics and call counts/order; fail unmatched/unconsumed scripts and prohibit live fallback.", 1368 "spec": "specs/PRODUCT_SPEC.md", 1369 "verification_method": "harness negative and provider integration tests", 1370 "implementation_steps": [ 1371 "S041", 1372 "S058" 1373 ], 1374 "fixture_ids": [ 1375 "PV018_unexpected_call", 1376 "PV019_missing_call", 1377 "PV020_wrong_request_state" 1378 ] 1379 }, 1380 { 1381 "id": "HYF-TEST-007", 1382 "title": "Determinism controls", 1383 "status": "approved", 1384 "requirement": "Control clocks/IDs/seeds/config/files/ports/scheduling and isolate cleanup; no sleep-based readiness or reserve-rebind races.", 1385 "spec": "specs/PRODUCT_SPEC.md", 1386 "verification_method": "harness unit/process tests", 1387 "implementation_steps": [ 1388 "S025", 1389 "S040", 1390 "S056", 1391 "S058", 1392 "S059", 1393 "S063", 1394 "S110", 1395 "S122" 1396 ], 1397 "fixture_ids": [] 1398 }, 1399 { 1400 "id": "HYF-TEST-008", 1401 "title": "Independent oracles", 1402 "status": "approved", 1403 "requirement": "Use reviewed expectations and independent small allocation oracles, not production self-comparison or model output as ground truth.", 1404 "spec": "specs/PRODUCT_SPEC.md", 1405 "verification_method": "review and oracle tests", 1406 "implementation_steps": [ 1407 "S011", 1408 "S019", 1409 "S091", 1410 "S092", 1411 "S119", 1412 "S120", 1413 "S128" 1414 ], 1415 "fixture_ids": [] 1416 }, 1417 { 1418 "id": "HYF-TEST-009", 1419 "title": "Properties and regressions", 1420 "status": "approved", 1421 "requirement": "Test conservation/precedence/uncertainty/order/unit/revision properties with bounded seeds and saved minimal regressions.", 1422 "spec": "specs/PRODUCT_SPEC.md", 1423 "verification_method": "property and targeted fault-seeding tests", 1424 "implementation_steps": [ 1425 "S118", 1426 "S119", 1427 "S120", 1428 "S121", 1429 "S123" 1430 ], 1431 "fixture_ids": [] 1432 }, 1433 { 1434 "id": "HYF-TEST-010", 1435 "title": "Golden discipline", 1436 "status": "approved", 1437 "requirement": "Exact business expectations include forbidden extras; tolerances are explicit and golden changes require requirement review.", 1438 "spec": "specs/PRODUCT_SPEC.md", 1439 "verification_method": "assertion tests and review", 1440 "implementation_steps": [ 1441 "S008", 1442 "S011", 1443 "S072" 1444 ], 1445 "fixture_ids": [] 1446 }, 1447 { 1448 "id": "HYF-TEST-011", 1449 "title": "Planned versus executed", 1450 "status": "approved", 1451 "requirement": "Planned cases are not passed tests; activate each at its checkpoint and require all mandatory cases at completion without silent skips.", 1452 "spec": "specs/PRODUCT_SPEC.md", 1453 "verification_method": "activation and completion checks", 1454 "implementation_steps": [ 1455 "S008", 1456 "S010", 1457 "S124", 1458 "S137" 1459 ], 1460 "fixture_ids": [] 1461 }, 1462 { 1463 "id": "HYF-TEST-012", 1464 "title": "Repo-owned validation", 1465 "status": "approved", 1466 "requirement": "Default pixi test remains familiar; add discovered repo-owned spec/domain/application/provider/journey/soak/live tasks incrementally and forge-agnostically.", 1467 "spec": "specs/PRODUCT_SPEC.md", 1468 "verification_method": "task discovery and command-contract tests", 1469 "implementation_steps": [ 1470 "S010", 1471 "S012", 1472 "S123", 1473 "S134", 1474 "S135" 1475 ], 1476 "fixture_ids": [] 1477 }, 1478 { 1479 "id": "HYF-REL-001", 1480 "title": "Ordered commits", 1481 "status": "approved", 1482 "requirement": "Follow the included sequence one independently tested/reviewed known-good commit at a time; evidence and document any proven necessary deviation.", 1483 "spec": "specs/ARCHITECTURE.md", 1484 "verification_method": "step ledger and per-commit review", 1485 "implementation_steps": [ 1486 "S002", 1487 "S015", 1488 "S137", 1489 "S138" 1490 ], 1491 "fixture_ids": [] 1492 }, 1493 { 1494 "id": "HYF-REL-002", 1495 "title": "Verification honesty", 1496 "status": "approved", 1497 "requirement": "Record real commands/results and blocked/N/A checks; no source/model/production completion claims from package validation alone.", 1498 "spec": "specs/ARCHITECTURE.md", 1499 "verification_method": "verification reports and release checklist", 1500 "implementation_steps": [ 1501 "S001", 1502 "S002", 1503 "S015", 1504 "S120", 1505 "S123", 1506 "S124", 1507 "S130", 1508 "S134", 1509 "S135", 1510 "S137", 1511 "S138" 1512 ], 1513 "fixture_ids": [] 1514 }, 1515 { 1516 "id": "HYF-REL-003", 1517 "title": "Tooling and quality", 1518 "status": "approved", 1519 "requirement": "Preserve pinned tooling, discover actual format/lint/build/security checks and supported target matrices; Cargo applies only to real relevant Rust workspaces.", 1520 "spec": "specs/ARCHITECTURE.md", 1521 "verification_method": "build/quality/target evidence", 1522 "implementation_steps": [ 1523 "S001", 1524 "S012", 1525 "S013", 1526 "S135", 1527 "S136" 1528 ], 1529 "fixture_ids": [] 1530 }, 1531 { 1532 "id": "HYF-REL-004", 1533 "title": "Real authority integration", 1534 "status": "approved", 1535 "requirement": "Simulated handoffs do not establish actual persistence/idempotency/concurrency; test real owning services before production activation.", 1536 "spec": "specs/ARCHITECTURE.md", 1537 "verification_method": "external integration gate", 1538 "implementation_steps": [ 1539 "S109", 1540 "S113", 1541 "S131", 1542 "S132", 1543 "S138" 1544 ], 1545 "fixture_ids": [ 1546 "JR002_buyer_match_revalidate", 1547 "JR003_duplicate_acceptance", 1548 "JR004_stale_acceptance", 1549 "JR005_stock_race" 1550 ] 1551 }, 1552 { 1553 "id": "HYF-REL-005", 1554 "title": "Model and account readiness", 1555 "status": "approved", 1556 "requirement": "Real-model metrics and provider privacy/region/capacity approvals are independent release gates; keep thresholds predeclared.", 1557 "spec": "specs/ARCHITECTURE.md", 1558 "verification_method": "external evaluation/account gate", 1559 "implementation_steps": [ 1560 "S127", 1561 "S128", 1562 "S129", 1563 "S130", 1564 "S138" 1565 ], 1566 "fixture_ids": [] 1567 }, 1568 { 1569 "id": "HYF-REL-006", 1570 "title": "Operational readiness", 1571 "status": "approved", 1572 "requirement": "Exercise safe provider disablement/rollback without deleting accepted business records; supply runbooks, examples and measured resource evidence.", 1573 "spec": "specs/ARCHITECTURE.md", 1574 "verification_method": "runbook drills and release gate", 1575 "implementation_steps": [ 1576 "S054", 1577 "S125", 1578 "S133", 1579 "S138" 1580 ], 1581 "fixture_ids": [] 1582 } 1583 ] 1584 }