{
  "title": "Conduit project rules",
  "updated": "2026-10-18",
  "version": "1.0",
  "intro": "These plain-English Conduit rules bring together all five September calls, written feedback and project records. Each rule includes its source and a practical check, with later explicit decisions taking precedence.",
  "sources": [
    {
      "id": "CALL-0910",
      "title": "September 10 call",
      "path": "transcripts/2026-09-10-impromptu-microsoft-teams-meeting.md",
      "url": "https://fathom.video/share/HcLW4qGePyanX-1b63puXnHxbTWRLg_c",
      "note": "Full transcript. Later explicit client decisions supersede earlier ambiguity."
    },
    {
      "id": "CALL-0916",
      "title": "September 16 call",
      "path": "transcripts/2026-09-16-req-intake-app-call.md",
      "url": "https://fathom.video/share/iWqMvCzjBxccXPU3rCGwyKtC_qrZWdW5",
      "note": "Full transcript; recording timestamps are elapsed time."
    },
    {
      "id": "CALL-0923",
      "title": "September 23 call",
      "path": "transcripts/2026-09-23-req-intake-app-follow-up.md",
      "url": "https://fathom.video/share/Eu8v1odso4by7U8pxs4T4xmoDVdTjrcz",
      "note": "Full transcript. Speaker attribution is occasionally inconsistent; use conversational context."
    },
    {
      "id": "CALL-0924",
      "title": "September 24 call",
      "path": "transcripts/2026-09-24-conduit-app-follow-up.md",
      "url": "https://fathom.video/share/xBnN3gB1vu6QN8ufVN4wGSkhnH_mwdaK",
      "note": "Full transcript; numbering separator superseded September 29."
    },
    {
      "id": "CALL-0929",
      "title": "September 29 call",
      "path": "transcripts/2026-09-29-conduit-follow-up.md",
      "url": "https://fathom.video/share/sGCximzBxip8ai1sFPRrmzav7qsGpGgY",
      "note": "Latest full call reviewed, including explicit manual interim workflows."
    },
    {
      "id": "EMAIL-0916",
      "title": "September 16 written feedback",
      "path": "docs/reference/2026-09-16/rod-written-feedback.md",
      "url": "",
      "note": "Primary written answers. Private contact details are not reproduced in this catalog."
    },
    {
      "id": "EMAIL-0928",
      "title": "September 28 consolidated written feedback",
      "path": "docs/reference/2026-09-29/rod-written-feedback.md",
      "url": "",
      "note": "Received September 28, stored September 29; later call clarifies the questions."
    },
    {
      "id": "EMAIL-0922",
      "title": "September 22 email review",
      "path": "docs/implementation/2026-09-22/rod-email-review.md",
      "url": "",
      "note": "Requirements summary of pasted email, not a verbatim primary email."
    },
    {
      "id": "REF-PO",
      "title": "Supplied historical PO and credits",
      "path": "docs/reference/2026-09-16/PO 12963 CO4 and 5.txt",
      "url": "",
      "note": "Text extract of supplied eleven-page PDF. Historical examples are not default values or current legal assignments."
    },
    {
      "id": "REF-EMAILS",
      "title": "Supplied attachment provenance",
      "path": "docs/reference/2026-09-16/email-sources.md",
      "url": "",
      "note": "Documents source PO, credit lines and unassigned terms appendix. Do not republish contact addresses."
    },
    {
      "id": "REF-TAX",
      "title": "Supplied province tax and purchase-type table",
      "path": "docs/reference/2026-09-23/province-tax-purchase-types.md",
      "url": "",
      "note": "Client reference transcription, not independently verified tax law."
    },
    {
      "id": "REF-DELIVERABLES",
      "title": "Supplied deliverables checklist",
      "path": "docs/reference/2026-09-23/deliverables-checklist.md",
      "url": "",
      "note": "Transcribed from client screenshot."
    },
    {
      "id": "REF-IMPORT",
      "title": "Supplied import templates and mapping record",
      "path": "docs/reference/2026-09-25/csv-import-mapping.md",
      "url": "",
      "note": "Separates supplied column headings from provisional implementation identity and merge rules."
    },
    {
      "id": "REF-SHEET",
      "title": "PO spreadsheet and search reference",
      "path": "docs/reference/2026-09-23/po-spreadsheet-review.md",
      "url": "",
      "note": "Recording screenshots and spoken context; columns and annotations do not settle every permission or accounting mapping."
    },
    {
      "id": "REF-PROJECTS",
      "title": "Extracted project data limitations",
      "path": "docs/data/README.md",
      "url": "",
      "note": "Source board extraction, unresolved numbers and assignments are not invented."
    },
    {
      "id": "PLAN-0916",
      "title": "September 16 call implementation plan",
      "path": "docs/2026-09-16-call-update-plan.md",
      "url": "",
      "note": "Historical requirements reconciliation; later calls take precedence."
    },
    {
      "id": "AUDIT-QUESTIONS",
      "title": "Earlier questions audit",
      "path": "docs/questions-transcript-audit.md",
      "url": "",
      "note": "Useful for unresolved boundaries and user clarifications, not current answers where later calls resolved them."
    },
    {
      "id": "AUDIT-0924",
      "title": "Independent September 24 call audit",
      "path": "docs/implementation/2026-09-24/epic/call-audit.md",
      "url": "",
      "note": "Source audit; unresolved items may be settled by September 29."
    },
    {
      "id": "RECON-0924",
      "title": "Source reconciliation",
      "path": "docs/implementation/2026-09-24/epic/source-reconciliation.md",
      "url": "",
      "note": "Separates implementation choices from client requirements."
    },
    {
      "id": "CONTRACT-0924",
      "title": "Shared backend contract",
      "path": "docs/implementation/2026-09-24/epic/backend-contract.md",
      "url": "",
      "note": "Technical behavior, not authority for business policy."
    },
    {
      "id": "CONTRACT-0929",
      "title": "September 29 mockup contract",
      "path": "docs/implementation/2026-09-29/mockup/team-contract.md",
      "url": "",
      "note": "Lead-chosen defaults and local-only scope, not client-approved policy."
    },
    {
      "id": "REPORT-0929",
      "title": "Alpha.63 implementation and publication report",
      "path": "docs/implementation/2026-09-29/mockup/report.md",
      "url": "",
      "note": "Records local/shared differences, publication and test limits."
    },
    {
      "id": "QA-0929",
      "title": "Alpha.63 independent QA report",
      "path": "docs/implementation/2026-09-29/mockup/qa-report.md",
      "url": "",
      "note": "Recorded tests, not a new runtime verification by this researcher."
    },
    {
      "id": "BACKLOG-0929",
      "title": "September 29 consolidated task list",
      "path": "docs/implementation/2026-09-29/update-tasks.md",
      "url": "",
      "note": "Tasks and deferrals, not proof of implementation or business approval of technical defaults."
    },
    {
      "id": "SERVICES-0918",
      "title": "Shared service implementation report",
      "path": "docs/implementation/2026-09-18/services-report.md",
      "url": "",
      "note": "Historical architecture, authorization and verification evidence."
    },
    {
      "id": "COVERAGE-0919",
      "title": "Earlier coverage audit",
      "path": "docs/implementation/2026-09-18/call-coverage-2026-09-19.md",
      "url": "",
      "note": "Historical gaps, including vendor handoff and budget email snapshot. Not proof that all remain unfixed today."
    },
    {
      "id": "FLOW-OLD",
      "title": "Original Power Automate flow review",
      "path": "docs/flow-mockup-review.md",
      "url": "",
      "note": "Historical system behavior, superseded for new-app approval policy by subsequent client calls."
    },
    {
      "id": "APP-OLD",
      "title": "Original Power App requisition source",
      "path": "unpacked2/Src/scrRequisition.pa.yaml",
      "url": "",
      "note": "Historical implementation evidence only."
    },
    {
      "id": "APP-CURRENT",
      "title": "Current mockup source",
      "path": "site/mockup/app.js",
      "url": "",
      "note": "Read on September 29; named functions are locators. Browser-local demonstrations are not shared-service guarantees."
    },
    {
      "id": "SERVER-WORKFLOW",
      "title": "Current shared workflow source",
      "path": "site/server/workflow.js",
      "url": "",
      "note": "Implementation facts only; named functions are locators."
    },
    {
      "id": "SERVER-STORE",
      "title": "Current shared store source",
      "path": "site/server/store.js",
      "url": "",
      "note": "Implementation facts only; numbering differs from alpha.63."
    },
    {
      "id": "TEST-FRONTEND",
      "title": "Current frontend workflow tests",
      "path": "site/mockup/workflows.test.js",
      "url": "",
      "note": "Test names identify exact checks. Existing tests were inspected, not rerun for this documentation-only task."
    },
    {
      "id": "TEST-SERVER",
      "title": "Current shared workflow integration tests",
      "path": "site/tests/sept24.test.js",
      "url": "",
      "note": "Technical acceptance evidence, not client policy."
    },
    {
      "id": "PROJECT-NOTES",
      "title": "Project decisions and status notes",
      "path": "docs/project-notes.md",
      "url": "",
      "note": "Project context record, including user-directed presentation changes. No credentials or contact addresses reproduced."
    },
    {
      "id": "NOTIFY-CONTRACT",
      "title": "Notification workflow builder contract",
      "path": "docs/implementation/2026-09-18/notification-workflow-scenarios.md",
      "url": "",
      "note": "User-directed implementation configuration and test scenarios, distinct from business notification defaults."
    },
    {
      "id": "LAYOUT-PLAN",
      "title": "User-directed layout plan",
      "path": "docs/2026-09-17-layout-review-plan.md",
      "url": "",
      "note": "Presentation conventions; later client decisions supersede old CR ordering and header delivery date proposals."
    },
    {
      "id": "REALISM-0925",
      "title": "Independent mockup realism review",
      "path": "docs/mockup-realism-review-2026-09-25.md",
      "url": "",
      "note": "Historical demonstration findings, not evidence of production policy or a fresh alpha.63 retest."
    },
    {
      "id": "SOURCE-VIDEO",
      "title": "Recorded PDF reference evidence",
      "path": "docs/reference/2026-09-16/recording/README.md",
      "url": "",
      "note": "Prior visual review of source frames; no new video playback performed during this catalog task."
    },
    {
      "id": "SERVER-DOCS",
      "title": "Current shared document handling source",
      "path": "site/server/documents.js",
      "url": "",
      "note": "File access, supplied legal files, assembly and distribution implementation only."
    },
    {
      "id": "PO-REVIEW",
      "title": "September 29 demo PO consistency review",
      "path": "docs/implementation/2026-09-29/rules/po-review.md",
      "url": "",
      "note": "Current teammate implementation report, including the consolidated F1-F8 fixture review, authorized identifier migration and remaining demonstration inputs. Reported local tests/browser checks do not establish public deployment and were not rerun by this researcher."
    },
    {
      "id": "CALL-1016",
      "title": "October 16 pre-rollout call",
      "path": "transcripts/2026-10-16-conduit-pre-rollout.md",
      "url": "",
      "note": "Pre-rollout review with Procurement. Approval routing must continue when a project has no Project director or District manager assigned, or when that person's account is deactivated."
    },
    {
      "id": "REF-PO-V7-3",
      "title": "Client PO form v7_3",
      "path": "docs/reference/2026-10-13-camillo-clarifications/po-v7_3-extracted.txt",
      "url": "",
      "note": "Industra-branded sample purchase order supplied by the client; layout reference for the vendor PO."
    },
    {
      "id": "OWNER-1018",
      "title": "October 18 launch decisions under Albert's delegated authority",
      "path": "docs/implementation/2026-10-18/decisions/judgment-calls.md",
      "url": "",
      "note": "Recorded launch decisions with sources and rationale."
    },
    {
      "id": "EMAIL-1014",
      "title": "October 14 email copy review response",
      "path": "docs/reference/2026-10-14-email-copy-review/Conduit Email Copy Review - Response.docx",
      "url": "",
      "note": "Rod Hoffelder's reviewed copy with the keep, disable and add list; the Gmail message reference is in docs/implementation/2026-10-18/client-email-reconciliation.md"
    }
  ],
  "sections": [
    {
      "id": "requests",
      "title": "Requests and purchase orders",
      "summary": "The request type determines intake and lifecycle. Financial approval, Procurement completion, document delivery and receiving are different events.",
      "rules": [
        {
          "id": "REQ-001",
          "title": "Four request types",
          "rule": "Support purchase requests (PR), change requests (CR), sourcing requests (SR) and emergency requests (ER).",
          "status": "confirmed",
          "scope": "Requests and purchase orders",
          "check": "Create each type and verify its distinct intake and lifecycle.",
          "sources": [
            {
              "id": "CALL-0910",
              "locator": "00:00:30-00:01:23"
            }
          ]
        },
        {
          "id": "REQ-002",
          "title": "Save and resume",
          "rule": "Users can save unfinished requests and resume without losing their work.",
          "status": "confirmed",
          "scope": "Requests and purchase orders",
          "check": "Leave a partially entered request and reopen it with the entered values intact.",
          "sources": [
            {
              "id": "CALL-0910",
              "locator": "00:01:36-00:02:17"
            }
          ],
          "notes": "Autosave versus explicit save was left to implementation; no automatic draft-deletion deadline was agreed."
        },
        {
          "id": "REQ-003",
          "title": "Request reference",
          "rule": "Every request has a unique reference usable for status lookup before a PO exists.",
          "status": "confirmed",
          "scope": "Requests and purchase orders",
          "check": "Find an unapproved request by its requisition reference without assigning an ordinary PO early.",
          "sources": [
            {
              "id": "CALL-0910",
              "locator": "00:21:17-00:21:58"
            }
          ]
        },
        {
          "id": "REQ-004",
          "title": "Optional small purchase requests",
          "rule": "A PR below $1,000 is optional but must be allowed. When no PO is requested, accounting can use the job number.",
          "status": "confirmed",
          "scope": "Requests and purchase orders",
          "check": "Submit a $300 PR successfully and explain the optional job-number path.",
          "sources": [
            {
              "id": "CALL-0924",
              "locator": "00:01:35-00:03:22"
            }
          ],
          "notes": "This replaces any earlier interpretation that the minimum prohibits small PRs."
        },
        {
          "id": "REQ-005",
          "title": "No minimum change amount",
          "rule": "A CR against an existing PO is allowed even when its change is below $1,000.",
          "status": "confirmed",
          "scope": "Requests and purchase orders",
          "check": "Accept a $300 change against a $100,000 PO without a minimum-amount blocker.",
          "sources": [
            {
              "id": "CALL-0924",
              "locator": "00:02:25-00:02:51"
            }
          ]
        },
        {
          "id": "REQ-006",
          "title": "Urgency flag",
          "rule": "PR, CR and SR can be marked urgent for Procurement prioritization. ER already represents emergency priority.",
          "status": "confirmed",
          "scope": "Requests and purchase orders",
          "check": "Verify urgency can be set on all three types and is visible to Procurement.",
          "sources": [
            {
              "id": "CALL-0923",
              "locator": "00:17:09-00:19:36"
            }
          ],
          "notes": "Urgency does not establish an approval bypass, automatic escalation or promised response time."
        },
        {
          "id": "REQ-007",
          "title": "Lean purchase intake",
          "rule": "Remove the general Supporting information free-text field from the first release while keeping quote handling and specific required reasons.",
          "status": "confirmed",
          "scope": "Requests and purchase orders",
          "check": "Ordinary purchase intake has no generic purchase-justification box; emergency and over-budget reasons remain.",
          "sources": [
            {
              "id": "CALL-0923",
              "locator": "00:21:53-00:25:57"
            }
          ]
        },
        {
          "id": "REQ-008",
          "title": "Project required",
          "rule": "Every request identifies the project it concerns.",
          "status": "confirmed",
          "scope": "Requests and purchase orders",
          "check": "Attempt each request type without a project and verify that it cannot be submitted.",
          "sources": [
            {
              "id": "CALL-0910",
              "locator": "00:01:15-00:01:23"
            },
            {
              "id": "CALL-0923",
              "locator": "00:13:15-00:13:42"
            },
            {
              "id": "CALL-0929",
              "locator": "00:17:11-00:17:19"
            }
          ]
        }
      ]
    },
    {
      "id": "approvals",
      "title": "Approval authority and routing",
      "summary": "Use target-project authority and the current approved policy. Do not infer authority from directory titles, examples or the old application.",
      "rules": [
        {
          "id": "APR-001",
          "title": "Current approval breakpoint",
          "rule": "The current ordinary purchase breakpoint is $50,000. PM authority includes exactly $50,000; amounts above it require the full senior route.",
          "status": "confirmed",
          "scope": "Approval authority and routing",
          "check": "On the approval tax basis, test $49,999.99, $50,000 and $50,000.01; only the last requires the above-PM route.",
          "sources": [
            {
              "id": "CALL-0910",
              "locator": "00:39:00-00:40:32"
            },
            {
              "id": "CALL-0923",
              "locator": "00:07:11-00:09:35"
            },
            {
              "id": "CALL-0929",
              "locator": "00:17:51-00:18:09"
            }
          ],
          "notes": "Current common senior settings do not introduce separate $100,000 or $250,000 shortcuts and do not cap the purchase at $50,000."
        },
        {
          "id": "APR-002",
          "title": "Complete sequential route",
          "rule": "Above PM authority, approval follows PM, project director, district manager, then executive. Each required stage waits for the previous stage. A project director or district manager stage with no one assigned, or whose assigned account is deactivated, is skipped and recorded on the request.",
          "status": "confirmed",
          "scope": "Approval authority and routing",
          "check": "For an above-limit coordinator request, assert all four stages in order and no premature later-stage notice. With the project director or district manager slot blank or naming a deactivated account, assert that stage is skipped, recorded on the request, and routing continues to the next stage.",
          "sources": [
            {
              "id": "CALL-0916",
              "locator": "00:00:08-00:00:35"
            },
            {
              "id": "CALL-0923",
              "locator": "00:08:07-00:09:35"
            },
            {
              "id": "CALL-1016",
              "locator": "Project director and District manager discussion"
            }
          ],
          "notes": "Do not stop at DM. Equal senior values do not cap the allowed purchase at $50,000. Only the project director and district manager stages may be skipped; the PM and executive stages stay required, a name that matches no account or several accounts is still refused, and nothing is approved automatically. Amended October 18, 2026 for the October 16 client request."
        },
        {
          "id": "APR-003",
          "title": "CEO default and COO replacement",
          "rule": "Use CEO as the default final approver; Procurement can reroute to COO when CEO is unavailable.",
          "status": "confirmed",
          "scope": "Approval authority and routing",
          "check": "Verify default CEO routing and an explicit Procurement COO substitution with recorded history.",
          "sources": [
            {
              "id": "EMAIL-0916",
              "locator": "Reply 1"
            },
            {
              "id": "CALL-0910",
              "locator": "00:39:32-00:39:57"
            }
          ]
        },
        {
          "id": "APR-004",
          "title": "PM submission approval",
          "rule": "A target-project PM submission counts as PM approval, including when the request must continue above the PM limit.",
          "status": "confirmed",
          "scope": "Approval authority and routing",
          "check": "A PM-submitted $80,000 request begins with PD; an in-limit PM request does not need another PM click.",
          "sources": [
            {
              "id": "EMAIL-0916",
              "locator": "Reply 2"
            },
            {
              "id": "CALL-0916",
              "locator": "00:00:39-00:00:59; 00:17:40-00:17:59"
            }
          ]
        },
        {
          "id": "APR-005",
          "title": "Project assignments drive routing",
          "rule": "Populate approvers from the selected project. Requesters do not freely pick the PM or senior approvers.",
          "status": "confirmed",
          "scope": "Approval authority and routing",
          "check": "Change the project and verify its configured route appears without allowing requester-selected approvers.",
          "sources": [
            {
              "id": "CALL-0910",
              "locator": "00:41:19-00:41:35; 00:43:43-00:44:29"
            }
          ]
        },
        {
          "id": "APR-006",
          "title": "Editable authority",
          "rule": "Maintain people, acting roles, role limits and project assignments in settings without editing application logic.",
          "status": "confirmed",
          "scope": "Approval authority and routing",
          "check": "Change a configured role assignment and limit, then verify a new request follows the updated configuration.",
          "sources": [
            {
              "id": "CALL-0910",
              "locator": "00:13:04-00:15:16"
            }
          ],
          "notes": "Real names, limits beyond the agreed breakpoint and assignments are setup data, not values to fabricate."
        },
        {
          "id": "APR-007",
          "title": "Membership is not approval authority",
          "rule": "Project coordinators and site superintendents can initiate requests; membership or a directory job title alone does not grant approval authority.",
          "status": "confirmed",
          "scope": "Approval authority and routing",
          "check": "A coordinator member can submit and the target-project PM receives approval work.",
          "sources": [
            {
              "id": "CALL-0916",
              "locator": "00:31:13-00:32:05; 00:35:24-00:35:52"
            }
          ]
        },
        {
          "id": "APR-008",
          "title": "Preconstruction route",
          "rule": "Preconstruction can initiate across projects, but purchases follow the target project PM and applicable senior approvals regardless of the initiator title.",
          "status": "confirmed",
          "scope": "Approval authority and routing",
          "check": "A preconstruction director initiates an in-limit project purchase and PM review is required.",
          "sources": [
            {
              "id": "CALL-0916",
              "locator": "00:33:34-00:38:50"
            }
          ]
        },
        {
          "id": "APR-009",
          "title": "Procurement-originated project purchases",
          "rule": "Procurement-originated project purchases must receive project PM review; Procurement personal authority must not bypass it.",
          "status": "confirmed",
          "scope": "Approval authority and routing",
          "check": "Before enabling this originator path, test in-limit and above-limit purchases for PM review and the normal applicable route.",
          "sources": [
            {
              "id": "CALL-0929",
              "locator": "00:24:37-00:25:48"
            }
          ],
          "notes": "Policy is confirmed, implementation was explicitly deferrable. Until fixed, Procurement staff avoid originating project requests; do not infer delivery from this confirmed status."
        },
        {
          "id": "APR-010",
          "title": "Interim Procurement restriction",
          "rule": "Until Procurement-originated PM routing is fixed, Procurement does not originate project purchase requests.",
          "status": "confirmed",
          "scope": "Approval authority and routing",
          "check": "Acceptance instructions state the restriction and do not advertise this path as safely available.",
          "sources": [
            {
              "id": "CALL-0929",
              "locator": "00:25:17-00:25:48"
            }
          ]
        },
        {
          "id": "APR-011",
          "title": "Manual absence rerouting",
          "rule": "Procurement can manually redirect approvals when the assigned approver is absent.",
          "status": "confirmed",
          "scope": "Approval authority and routing",
          "check": "Verify Procurement can deliberately reroute an affected request and the requester cannot select arbitrary approvers.",
          "sources": [
            {
              "id": "CALL-0910",
              "locator": "00:42:09-00:44:16"
            }
          ]
        },
        {
          "id": "APR-012",
          "title": "Self-service delegation later",
          "rule": "Self-service vacation delegation is a future option, not a first-release requirement.",
          "status": "deferred",
          "scope": "Approval authority and routing",
          "check": "Do not fail current release solely for absence of personal vacation-delegate settings.",
          "sources": [
            {
              "id": "CALL-0910",
              "locator": "00:42:52-00:43:43"
            }
          ]
        },
        {
          "id": "APR-013",
          "title": "Inclusive PM boundary",
          "rule": "Treat up to $50,000 as inclusive PM authority, with escalation only above that boundary under the current policy.",
          "status": "confirmed",
          "scope": "Approval authority and routing",
          "check": "Verify an exactly $50,000 approval amount remains within PM authority, including in-limit PM submission approval.",
          "sources": [
            {
              "id": "CALL-0910",
              "locator": "00:13:21; 00:40:25"
            },
            {
              "id": "CALL-0916",
              "locator": "00:11:17-00:11:32"
            },
            {
              "id": "CALL-0929",
              "locator": "00:18:00-00:18:09"
            }
          ],
          "notes": "Resolved on review using repeated up-to and within wording, including the latest call. Do not perpetuate older secondary audits that left this boundary open. Small-PR optionality is separately defined in REQ-004."
        },
        {
          "id": "APR-014",
          "title": "Senior self-approval edge cases",
          "rule": "The complete policy for PD, DM or executive submissions, multiple simultaneous project roles and any senior shortcut is not fully established by the calls.",
          "status": "open",
          "scope": "Approval authority and routing",
          "check": "Human confirmation required for these cases; do not promote current generic self-approval code or the old flow to policy.",
          "sources": [
            {
              "id": "AUDIT-QUESTIONS",
              "locator": "Rows 4-5"
            },
            {
              "id": "CALL-0916",
              "locator": "00:00:39-00:01:36"
            },
            {
              "id": "SERVER-WORKFLOW",
              "locator": "routeFor"
            }
          ]
        },
        {
          "id": "APR-015",
          "title": "Remove confusing authority labels",
          "rule": "Remove the confusing No limit control without changing the agreed sequence or imposing a new maximum purchase amount.",
          "status": "confirmed",
          "scope": "Approval authority and routing",
          "check": "With all role values at $50,000, a larger purchase still reaches PD, DM and executive in sequence.",
          "sources": [
            {
              "id": "CALL-0923",
              "locator": "00:07:11-00:10:17"
            }
          ]
        },
        {
          "id": "APR-016",
          "title": "Rejection reason and visibility",
          "rule": "An approver can reject with a mandatory reason. Notify the requester and earlier approvers of the rejection and reason.",
          "status": "confirmed",
          "scope": "Approval authority and routing",
          "check": "Block blank rejection, persist the reason, and check recipients include requester and prior approvers.",
          "sources": [
            {
              "id": "CALL-0916",
              "locator": "00:18:46-00:20:00"
            },
            {
              "id": "CALL-0923",
              "locator": "01:05:04-01:06:19"
            }
          ],
          "notes": "These are informational notices, not an automatic restart of prior approvals. Detailed resubmission semantics require their own evidence."
        }
      ]
    },
    {
      "id": "money",
      "title": "Money, budgets, taxes and credits",
      "summary": "Use the supplied configuration and source-backed financial basis. Do not turn examples into balances or present client tax examples as legal advice.",
      "rules": [
        {
          "id": "FIN-001",
          "title": "Line budgets and variance",
          "rule": "Collect line budgets and show total budget against the request amount, including variance amount and percentage.",
          "status": "confirmed",
          "scope": "Money, budgets, taxes and credits",
          "check": "Use multiple lines and verify summed budget, request value and variance in the review.",
          "sources": [
            {
              "id": "CALL-0910",
              "locator": "00:02:24-00:03:09"
            }
          ]
        },
        {
          "id": "FIN-002",
          "title": "Over-budget explanation",
          "rule": "Require a reason when a request is over budget and make it available to approvers.",
          "status": "confirmed",
          "scope": "Money, budgets, taxes and credits",
          "check": "Block an over-budget request without a reason and show the saved reason in approval review.",
          "sources": [
            {
              "id": "CALL-0910",
              "locator": "00:03:09-00:03:56"
            }
          ]
        },
        {
          "id": "FIN-003",
          "title": "Approver budget snapshot",
          "rule": "Give approvers a concise budget snapshot with variance amount and percentage, red for over budget and green for under budget, plus the over-budget reason.",
          "status": "confirmed",
          "scope": "Money, budgets, taxes and credits",
          "check": "Inspect the actual approver-facing notification or summary, not only the intake screen.",
          "sources": [
            {
              "id": "CALL-0910",
              "locator": "00:02:45-00:03:56"
            },
            {
              "id": "CALL-0923",
              "locator": "00:22:20-00:23:19"
            }
          ],
          "notes": "Earlier audit found incomplete email snapshot fields. Verify current output rather than assuming templates are complete."
        },
        {
          "id": "FIN-004",
          "title": "Approval tax basis",
          "rule": "Include applicable PST and HST in the approval amount; exclude GST from that approval basis.",
          "status": "confirmed",
          "scope": "Money, budgets, taxes and credits",
          "check": "Test a pre-tax amount below authority that exceeds it after applicable PST or HST; GST alone must not trigger that increase.",
          "sources": [
            {
              "id": "CALL-0910",
              "locator": "00:18:22-00:19:33; 00:39:11"
            },
            {
              "id": "CALL-0923",
              "locator": "00:29:14-00:29:46"
            }
          ]
        },
        {
          "id": "FIN-005",
          "title": "Project province defaults",
          "rule": "The selected project province drives configured tax defaults and rates, including the first detailed line.",
          "status": "confirmed",
          "scope": "Money, budgets, taxes and credits",
          "check": "Select a configured project and verify initial line defaults without manual tax selection; repeat after project changes.",
          "sources": [
            {
              "id": "CALL-0923",
              "locator": "00:27:01-00:29:46; 00:31:45-00:34:49"
            },
            {
              "id": "CALL-0929",
              "locator": "00:16:21-00:17:19"
            }
          ]
        },
        {
          "id": "FIN-006",
          "title": "Tax inheritance on added lines",
          "rule": "New lines inherit the first line tax selections while each line remains editable for applicable exceptions.",
          "status": "confirmed",
          "scope": "Money, budgets, taxes and credits",
          "check": "Change first-line applicability, add a line, then independently edit its taxes.",
          "sources": [
            {
              "id": "CALL-0929",
              "locator": "00:16:49-00:17:02"
            },
            {
              "id": "CALL-0923",
              "locator": "00:33:39-00:34:49"
            }
          ]
        },
        {
          "id": "FIN-007",
          "title": "HST exclusivity",
          "rule": "HST cannot be combined with GST or PST; GST and PST can coexist where configured.",
          "status": "confirmed",
          "scope": "Money, budgets, taxes and credits",
          "check": "Select HST after GST/PST and verify exclusivity in UI and submitted data.",
          "sources": [
            {
              "id": "CALL-0923",
              "locator": "00:28:11-00:28:56"
            }
          ]
        },
        {
          "id": "FIN-008",
          "title": "Explicit exemption",
          "rule": "Each detailed purchase line requires a tax selection or explicit Tax exempt. Tax exempt means no selected taxes.",
          "status": "confirmed",
          "scope": "Money, budgets, taxes and credits",
          "check": "Block an empty choice and verify exemption clears taxes; do not apply line-tax validation to minimal ER intake.",
          "sources": [
            {
              "id": "CALL-0924",
              "locator": "00:15:00-00:15:48"
            },
            {
              "id": "CALL-0923",
              "locator": "00:13:01-00:13:43"
            }
          ]
        },
        {
          "id": "FIN-009",
          "title": "Per-line applicability exceptions",
          "rule": "Allow users to remove normally applicable tax selections for a genuine exception, including PST-only exemption without removing GST.",
          "status": "confirmed",
          "scope": "Money, budgets, taxes and credits",
          "check": "Verify a configured GST/PST line can retain GST while removing PST.",
          "sources": [
            {
              "id": "CALL-0923",
              "locator": "00:31:00-00:34:49"
            }
          ]
        },
        {
          "id": "FIN-010",
          "title": "Configured rates, not casual guesses",
          "rule": "Maintain tax rules centrally by province; do not make requesters re-enter rates or derive additional province rules from casual call examples.",
          "status": "confirmed",
          "scope": "Money, budgets, taxes and credits",
          "check": "Verify the configured table drives calculations and missing mappings remain explicit.",
          "sources": [
            {
              "id": "CALL-0923",
              "locator": "00:30:31-00:34:49"
            },
            {
              "id": "REF-TAX",
              "locator": "Province table"
            }
          ],
          "notes": "Supplied table: BC/MB GST 5%, PST 7%; SK GST 5%, PST 6%; ON HST 13%; NB HST 15%; NS HST 14%; NU/NT/AB/YK GST 5% with no provincial tax row. These are supplied reference values, not independently verified current law. No Quebec row was supplied."
        },
        {
          "id": "FIN-011",
          "title": "Finance validation inputs",
          "rule": "Accounting must validate unresolved tax exceptions, arithmetic examples, rounding and financial mappings.",
          "status": "open",
          "scope": "Money, budgets, taxes and credits",
          "check": "Human confirmation required for unspecified cases; compare calculations with approved finance examples.",
          "sources": [
            {
              "id": "CALL-0916",
              "locator": "00:24:41-00:25:05"
            },
            {
              "id": "AUDIT-QUESTIONS",
              "locator": "Rows 16-19 and User clarification after the audit"
            }
          ],
          "notes": "The calls define approval tax inclusion but do not explicitly define whether entered budgets include those taxes. Keep this distinction visible without inventing a tax rule."
        },
        {
          "id": "FIN-012",
          "title": "Legitimate credits",
          "rule": "Preserve legitimate negative credit lines and their signed financial effect in requests and PO history.",
          "status": "confirmed",
          "scope": "Money, budgets, taxes and credits",
          "check": "Process a credit against an existing PO and verify it reduces the combined amount without erasing original lines.",
          "sources": [
            {
              "id": "REF-PO",
              "locator": "PAGE 1, lines 012 and 017; PAGE 2, line 018"
            },
            {
              "id": "REF-EMAILS",
              "locator": "PO example and negative credit lines"
            }
          ],
          "notes": "Credits are evidenced by the historical client PO, not newly specified by September 24. Representation and approval magnitude are separate implementation choices."
        },
        {
          "id": "FIN-013",
          "title": "Received-value floor",
          "rule": "A revised PO must not fall below the amount already received against it.",
          "status": "confirmed",
          "scope": "Money, budgets, taxes and credits",
          "check": "Reject the source example reducing a $100,000 PO to $50,000 after $75,000 has been received.",
          "sources": [
            {
              "id": "EMAIL-0916",
              "locator": "CRs: received-amount red flag"
            }
          ],
          "notes": "The client confirmed protection against reducing an order below received value. The subtotal accounting basis and unknown-balance blocking mechanism are implementation safeguards in FIN-014, not verbatim client accounting decisions."
        },
        {
          "id": "FIN-014",
          "title": "Verified receipt comparison",
          "rule": "The implementation contract compares revised subtotal excluding taxes with verified received subtotal and blocks a reduction when that receipt balance is unknown.",
          "status": "implementation",
          "scope": "Money, budgets, taxes and credits",
          "check": "Verify reductions with unknown receipt balances are blocked pending verified subtotal and source note. Verify recorded zero is distinguished from unknown, and positive received subtotal is compared with revised subtotal, never the approval total including PST/HST.",
          "sources": [
            {
              "id": "SERVER-WORKFLOW",
              "locator": "checkReceivedFloor; recordReceipt"
            },
            {
              "id": "CONTRACT-0924",
              "locator": "Delta CR and received-floor contract"
            }
          ],
          "notes": "The client confirmed the general received-value floor only. Subtotal basis, source-note verification and blocking an unknown-balance reduction are implementation-contract safeguards, not independently stated client accounting policy. Receiving UI remains deferred."
        },
        {
          "id": "FIN-015",
          "title": "No invented receipt balance",
          "rule": "The unexplained $3,000 in the demonstration is not verified receiving evidence.",
          "status": "open",
          "scope": "Money, budgets, taxes and credits",
          "check": "Human confirmation required. Trace any displayed receipt floor to its source and do not install $3,000 as a default.",
          "sources": [
            {
              "id": "CALL-0924",
              "locator": "00:03:28-00:03:49"
            },
            {
              "id": "RECON-0924",
              "locator": "F14 receiving"
            }
          ],
          "notes": "Human verification required for historical balances. Removing the invented value does not authorize removing the real received-value safeguard."
        },
        {
          "id": "FIN-016",
          "title": "Authoritative tax snapshots",
          "rule": "The shared service establishes rates from trusted configuration for new lines and preserves trusted historical snapshots; requester-supplied rates cannot reduce approval routing.",
          "status": "implementation",
          "scope": "Money, budgets, taxes and credits",
          "check": "Try forged zero rates on a configured taxable purchase, then edit/reorder saved lines and verify legitimate historical rates survive.",
          "sources": [
            {
              "id": "CONTRACT-0924",
              "locator": "Tax integrity update"
            },
            {
              "id": "TEST-SERVER",
              "locator": "new tax snapshots reject requester rate forgery on create, save, append, project change and correction"
            }
          ]
        }
      ]
    },
    {
      "id": "changes",
      "title": "Change requests, corrections and history",
      "summary": "A new change describes its own additions or credits. Approved original data and every subsequent revision remain traceable.",
      "rules": [
        {
          "id": "CR-001",
          "title": "Project then PO",
          "rule": "Choose the project before choosing the existing PO, and offer only POs for that project.",
          "status": "confirmed",
          "scope": "Change requests, corrections and history",
          "check": "Select a project and verify the PO list is scoped; changing project clears an incompatible PO.",
          "sources": [
            {
              "id": "CALL-0923",
              "locator": "00:05:17-00:06:26"
            }
          ]
        },
        {
          "id": "CR-002",
          "title": "Blank change lines",
          "rule": "A new CR starts with blank change lines and retains the original approved PO lines separately.",
          "status": "confirmed",
          "scope": "Change requests, corrections and history",
          "check": "Add two CR lines to a three-line PO and verify the issued result retains all five lines.",
          "sources": [
            {
              "id": "CALL-0924",
              "locator": "00:11:29-00:12:38"
            }
          ],
          "notes": "This supersedes the earlier editable-baseline intake. Do not replace the full PO with only the delta."
        },
        {
          "id": "CR-003",
          "title": "Inherited header and requirements",
          "rule": "CR inherits the original vendor, recipient, header and requirements; hide redundant deliverables and contract controls.",
          "status": "confirmed",
          "scope": "Change requests, corrections and history",
          "check": "Open a CR and verify known PO values remain inherited while new change lines are empty.",
          "sources": [
            {
              "id": "CALL-0924",
              "locator": "00:05:59-00:06:10; 00:11:29-00:12:24"
            }
          ]
        },
        {
          "id": "CR-004",
          "title": "Original payment terms",
          "rule": "CR users do not reselect payment terms; retain the original terms on the revised PDF.",
          "status": "confirmed",
          "scope": "Change requests, corrections and history",
          "check": "Create a CR and compare resulting payment terms with the original PO.",
          "sources": [
            {
              "id": "CALL-0923",
              "locator": "00:06:27-00:07:06"
            }
          ]
        },
        {
          "id": "CR-005",
          "title": "Change amount routes approval",
          "rule": "Route each CR on that change amount, not the revised full PO total or accumulated previous changes.",
          "status": "confirmed",
          "scope": "Change requests, corrections and history",
          "check": "A $10,000 increase to a $45,000 PO uses $10,000 as the change approval basis.",
          "sources": [
            {
              "id": "CALL-0916",
              "locator": "00:01:46-00:02:26"
            },
            {
              "id": "EMAIL-0916",
              "locator": "Reply 3"
            }
          ]
        },
        {
          "id": "CR-006",
          "title": "Credit approval magnitude convention",
          "rule": "Current code routes decreases using the absolute signed change amount.",
          "status": "implementation",
          "scope": "Change requests, corrections and history",
          "check": "Verify a negative delta produces a positive routing magnitude, while documenting this as implementation pending finance-policy confirmation.",
          "sources": [
            {
              "id": "SERVER-WORKFLOW",
              "locator": "submit, row.routingAmount assignment; routeFor"
            },
            {
              "id": "APP-CURRENT",
              "locator": "changeSummary"
            },
            {
              "id": "PLAN-0916",
              "locator": "Genuine follow-ups and dependencies"
            }
          ],
          "notes": "The client confirmed routing per change and supplied valid credits, but did not explicitly define absolute-value routing for every decrease scenario."
        },
        {
          "id": "CR-007",
          "title": "Quote for ordinary changes",
          "rule": "Ordinary new CRs require the supporting quote.",
          "status": "confirmed",
          "scope": "Change requests, corrections and history",
          "check": "Attempt an ordinary new CR without a quote and then with an uploaded quote.",
          "sources": [
            {
              "id": "CALL-0924",
              "locator": "00:12:17-00:12:38"
            }
          ],
          "notes": "After-the-fact requests have separate reduced-document requirements. A configurable implementation toggle is not proof of a client-approved general waiver."
        },
        {
          "id": "CR-008",
          "title": "History remains intact",
          "rule": "Retain original approved records and an audit history of changes instead of silently rewriting the original transaction.",
          "status": "confirmed",
          "scope": "Change requests, corrections and history",
          "check": "Compare original and revised records and verify actor, action and saved versions are traceable.",
          "sources": [
            {
              "id": "CALL-0910",
              "locator": "00:10:47-00:11:51"
            },
            {
              "id": "CALL-0924",
              "locator": "00:07:44-00:08:38"
            }
          ]
        },
        {
          "id": "CR-009",
          "title": "Procurement correction discretion",
          "rule": "Authorized Procurement superusers can make minor corrections while preserving approval, or deliberately return a substantial correction for approval.",
          "status": "confirmed",
          "scope": "Change requests, corrections and history",
          "check": "Exercise both correction choices and verify the selected action persists with history.",
          "sources": [
            {
              "id": "CALL-0916",
              "locator": "00:05:19-00:07:41"
            },
            {
              "id": "CALL-0924",
              "locator": "00:08:43-00:09:48"
            }
          ],
          "notes": "No fixed monetary tolerance was agreed. The $1 example is not a policy allowing every change under that amount to bypass review."
        },
        {
          "id": "CR-010",
          "title": "Stale revisions and correction safety",
          "rule": "Current implementation rejects stale PO baselines, rechecks receipt floors at final approval and prevents a corrected delta from being appended twice.",
          "status": "implementation",
          "scope": "Change requests, corrections and history",
          "check": "Use competing CRs and a full-ledger correction; verify stale submission fails and the combined ledger is not duplicated.",
          "sources": [
            {
              "id": "CONTRACT-0924",
              "locator": "Final clarifications; Frontend coordination alignment"
            },
            {
              "id": "TEST-SERVER",
              "locator": "delta corrections do not append the original delta twice and stale CRs cannot issue"
            }
          ]
        },
        {
          "id": "CR-011",
          "title": "Legacy CR compatibility",
          "rule": "Existing replacement-style CRs keep their original meaning while new delta CRs append changes.",
          "status": "implementation",
          "scope": "Change requests, corrections and history",
          "check": "Load a historical replacement CR and a new delta CR and verify neither is interpreted as the other.",
          "sources": [
            {
              "id": "CONTRACT-0924",
              "locator": "New additive CRs and absent changeMode"
            },
            {
              "id": "TEST-SERVER",
              "locator": "legacy replacement CRs stay replacements and require no new quote"
            }
          ]
        }
      ]
    },
    {
      "id": "emergency",
      "title": "Emergency requests",
      "summary": "Emergency intake provides a usable PO reference quickly, followed by retained follow-up and full purchase details.",
      "rules": [
        {
          "id": "ER-001",
          "title": "Four-field intake",
          "rule": "Initial ER requires project, vendor, emergency reason and approximate spend, then goes directly to review without line items or taxes.",
          "status": "confirmed",
          "scope": "Emergency requests",
          "check": "Complete a fresh ER with those four fields and no priced lines, quote, site instructions or taxes.",
          "sources": [
            {
              "id": "CALL-0923",
              "locator": "00:12:46-00:15:59; 00:19:05-00:19:19"
            }
          ],
          "notes": "Supersedes the earlier vendor/reason-only discussion and the September 22 optional-line flow."
        },
        {
          "id": "ER-002",
          "title": "Immediate emergency number",
          "rule": "Issue an emergency PO reference without waiting for ordinary financial approvals so the requester can contact the vendor.",
          "status": "confirmed",
          "scope": "Emergency requests",
          "check": "Submit a minimal ER and verify a clearly identified number is available immediately.",
          "sources": [
            {
              "id": "CALL-0910",
              "locator": "00:20:00-00:21:17"
            },
            {
              "id": "PROJECT-NOTES",
              "locator": "Key Decisions, September 19 provisional PO display instruction"
            }
          ],
          "notes": "The client requested immediate emergency numbering. Later user direction shows the provisional number only after successful ER submission, prominently on confirmation. This does not mean the purchase is fully approved or completed."
        },
        {
          "id": "ER-003",
          "title": "Retain emergency and follow up",
          "rule": "Keep the emergency record and follow up for actual scope and costs, normally the next day. Do not automatically discard it because details are incomplete.",
          "status": "confirmed",
          "scope": "Emergency requests",
          "check": "Reopen an ER and collect full details with its original history intact.",
          "sources": [
            {
              "id": "CALL-0916",
              "locator": "00:12:22-00:15:14"
            },
            {
              "id": "CALL-0923",
              "locator": "00:13:48-00:15:51"
            }
          ]
        },
        {
          "id": "ER-004",
          "title": "Visible emergency reference",
          "rule": "Show the emergency PO number in the requisition list as well as details, with a path to complete purchase information.",
          "status": "confirmed",
          "scope": "Emergency requests",
          "check": "Compare the ER list, detail and follow-up action for the same reference.",
          "sources": [
            {
              "id": "CALL-0929",
              "locator": "00:10:17-00:11:44"
            }
          ]
        },
        {
          "id": "ER-005",
          "title": "Same-number retention convention",
          "rule": "Current implementation retains the reserved emergency number through detailed completion and later approval.",
          "status": "implementation",
          "scope": "Emergency requests",
          "check": "Complete an ER and verify the reservation is reused rather than generating a second PO.",
          "sources": [
            {
              "id": "TEST-FRONTEND",
              "locator": "previously recorded emergency remains resumable without changing its number"
            },
            {
              "id": "SERVER-STORE",
              "locator": "nextPoNumber"
            },
            {
              "id": "AUDIT-QUESTIONS",
              "locator": "Row 10"
            }
          ],
          "notes": "Consistent with operational follow-up, but early calls did not separately ratify a provisional-to-permanent numbering policy."
        },
        {
          "id": "ER-006",
          "title": "Exceptional emergency outcomes",
          "rule": "No detailed new abandonment, cancellation or rejection-after-vendor-use branch was agreed beyond retaining the record and following up.",
          "status": "open",
          "scope": "Emergency requests",
          "check": "Human confirmation required before adding automatic deletion, cancellation, number recycling or special emergency escalation.",
          "sources": [
            {
              "id": "CALL-0916",
              "locator": "00:12:22-00:15:14"
            }
          ]
        }
      ]
    },
    {
      "id": "afterfact",
      "title": "After-the-fact purchases",
      "summary": "Capture off-process commitments for payment and visibility without requiring information the vendor no longer needs.",
      "rules": [
        {
          "id": "ATF-001",
          "title": "PR and CR after-the-fact flag",
          "rule": "Both PR and CR can be explicitly marked after the fact when work or purchase commitment already happened.",
          "status": "confirmed",
          "scope": "After-the-fact purchases",
          "check": "Create each type with the flag and preserve it in stored records and later reporting.",
          "sources": [
            {
              "id": "CALL-0916",
              "locator": "00:47:00-00:49:55"
            },
            {
              "id": "EMAIL-0916",
              "locator": "PRs and CRs after the fact"
            }
          ]
        },
        {
          "id": "ATF-002",
          "title": "Retain financial essentials",
          "rule": "After-the-fact requests retain vendor, project and complete financial lines, including quantities, units, descriptions, cost codes and amounts.",
          "status": "confirmed",
          "scope": "After-the-fact purchases",
          "check": "Verify every financial line is present and validated despite the simplified header.",
          "sources": [
            {
              "id": "CALL-0916",
              "locator": "00:50:35-00:51:00"
            }
          ]
        },
        {
          "id": "ATF-003",
          "title": "Hide irrelevant vendor instructions",
          "rule": "After-the-fact entry does not require future-delivery instructions, site contacts, PO recipient, supplier quote or special deliverables solely for the vendor.",
          "status": "confirmed",
          "scope": "After-the-fact purchases",
          "check": "Complete an after-the-fact request without those fields while retaining financial requirements.",
          "sources": [
            {
              "id": "CALL-0916",
              "locator": "00:51:00-00:51:54"
            }
          ],
          "notes": "An invoice may be supplied. Do not reinstate the ordinary CR quote gate indiscriminately on this path."
        },
        {
          "id": "ATF-004",
          "title": "Procurement decides vendor distribution",
          "rule": "An after-the-fact PO need not be sent to the vendor, but accounting needs the information and requester or PM may need a copy for records.",
          "status": "confirmed",
          "scope": "After-the-fact purchases",
          "check": "Verify vendor sending can be omitted without losing the internal accounting and record-copy path.",
          "sources": [
            {
              "id": "CALL-0916",
              "locator": "00:08:40-00:12:18"
            },
            {
              "id": "EMAIL-0916",
              "locator": "Reply 5 and PRs and CRs after the fact"
            }
          ]
        },
        {
          "id": "ATF-005",
          "title": "No invented punitive approvals",
          "rule": "After-the-fact management visibility is required, but extra recipients and any special escalation are not fully decided.",
          "status": "open",
          "scope": "After-the-fact purchases",
          "check": "Human confirmation required before adding mandatory owner approval or mass notification solely because the flag is set.",
          "sources": [
            {
              "id": "CALL-0916",
              "locator": "00:48:42-00:49:55; 00:51:58-00:52:19"
            }
          ]
        }
      ]
    },
    {
      "id": "sourcing",
      "title": "Sourcing requests and future conversion",
      "summary": "Sourcing is an unpriced procurement engagement, not an automatic purchasing commitment.",
      "rules": [
        {
          "id": "SR-001",
          "title": "Simple sourcing intake",
          "rule": "SR captures the need, available budget and project without requiring the normal vendor and full purchase form.",
          "status": "confirmed",
          "scope": "Sourcing requests and future conversion",
          "check": "Submit a sourcing need without a chosen vendor or fully priced purchase lines.",
          "sources": [
            {
              "id": "CALL-0910",
              "locator": "00:00:55-00:01:23"
            }
          ]
        },
        {
          "id": "SR-002",
          "title": "No purchase approval for sourcing",
          "rule": "SR goes to Procurement without the purchase approval chain and may close without becoming a PO.",
          "status": "confirmed",
          "scope": "Sourcing requests and future conversion",
          "check": "Close an SR without creating a PO or requiring PM financial approval.",
          "sources": [
            {
              "id": "CALL-0916",
              "locator": "00:15:16-00:17:26"
            }
          ]
        },
        {
          "id": "SR-003",
          "title": "Mandatory Need-By",
          "rule": "SR requires a Need-By date describing when the requester needs the outcome, distinct from a vendor delivery promise.",
          "status": "confirmed",
          "scope": "Sourcing requests and future conversion",
          "check": "Block SR submission with no Need-By and verify the entered date persists.",
          "sources": [
            {
              "id": "EMAIL-0928",
              "locator": "Section 5, Need-By Date"
            },
            {
              "id": "CALL-0929",
              "locator": "00:21:36-00:21:58"
            }
          ]
        },
        {
          "id": "SR-004",
          "title": "Requester decides purchase",
          "rule": "Completing sourcing must not automatically create a PR. Return findings to the requester, who decides whether and when to purchase.",
          "status": "confirmed",
          "scope": "Sourcing requests and future conversion",
          "check": "Complete sourcing and verify no purchasing commitment is automatically created.",
          "sources": [
            {
              "id": "CALL-0929",
              "locator": "00:22:01-00:23:40"
            }
          ]
        },
        {
          "id": "SR-005",
          "title": "Manual sourcing handoff allowed",
          "rule": "Procurement may exchange results and the proceed-or-not decision by email outside the app for initial operation.",
          "status": "confirmed",
          "scope": "Sourcing requests and future conversion",
          "check": "Release instructions explain the manual handoff without claiming an implemented return workflow.",
          "sources": [
            {
              "id": "CALL-0929",
              "locator": "00:24:09-00:24:35"
            }
          ]
        },
        {
          "id": "SR-006",
          "title": "Future results-return interface",
          "rule": "Build the detailed sourcing results return and requester-controlled conversion interface later.",
          "status": "deferred",
          "scope": "Sourcing requests and future conversion",
          "check": "When scoped, verify quotes, drawings and supporting information can be returned and the authorized requester chooses conversion.",
          "sources": [
            {
              "id": "CALL-0929",
              "locator": "00:22:26-00:24:35"
            }
          ]
        },
        {
          "id": "SR-007",
          "title": "Conversion identity and permissions",
          "rule": "The earlier preference was to continue the same request and number, but the latest return/conversion interface and precise permission rules remain to be designed.",
          "status": "open",
          "scope": "Sourcing requests and future conversion",
          "check": "Human confirmation required for the final conversion contract; preserve source linkage and do not equate current Procurement-only conversion with approved future permissions.",
          "sources": [
            {
              "id": "EMAIL-0916",
              "locator": "Replies 7-8"
            },
            {
              "id": "CALL-0916",
              "locator": "00:15:19-00:17:26"
            },
            {
              "id": "CALL-0929",
              "locator": "00:22:01-00:24:35"
            }
          ]
        }
      ]
    },
    {
      "id": "procurement",
      "title": "Procurement review and Spectrum completion",
      "summary": "Business approval does not mean the PO has been entered into the accounting system.",
      "rules": [
        {
          "id": "PROC-001",
          "title": "Review after business approval",
          "rule": "After financial approval, show the PO number and Under Procurement Review while Procurement completes manual Spectrum entry.",
          "status": "confirmed",
          "scope": "Procurement review and Spectrum completion",
          "check": "Submit an in-limit PM purchase and verify its message does not imply completed external entry.",
          "sources": [
            {
              "id": "CALL-0924",
              "locator": "00:16:38-00:19:16"
            },
            {
              "id": "CALL-0929",
              "locator": "00:17:51-00:19:36"
            }
          ]
        },
        {
          "id": "PROC-002",
          "title": "Spectrum-ready marker",
          "rule": "Provide a persistent marker showing Procurement has actually entered the approved PO in Spectrum. Future automation may set it after successful transfer.",
          "status": "confirmed",
          "scope": "Procurement review and Spectrum completion",
          "check": "Mark a genuinely entered item and verify state remains visible after reload and to shared users in the actual app.",
          "sources": [
            {
              "id": "CALL-0929",
              "locator": "00:05:40-00:08:23"
            }
          ],
          "notes": "A manually checked marker is not proof an API performed a transfer."
        },
        {
          "id": "PROC-003",
          "title": "Pending action queue",
          "rule": "Let Procurement filter business-approved requests needing review or Spectrum entry, and distinguish ready from not-ready items while retaining access to other records.",
          "status": "confirmed",
          "scope": "Procurement review and Spectrum completion",
          "check": "Mark entry complete and verify the item leaves the pending Procurement queue.",
          "sources": [
            {
              "id": "CALL-0929",
              "locator": "00:05:50-00:10:08"
            }
          ]
        },
        {
          "id": "PROC-004",
          "title": "Completion communication",
          "rule": "Communicate to the requester when Procurement completes its work, and keep notification wording editable.",
          "status": "confirmed",
          "scope": "Procurement review and Spectrum completion",
          "check": "Verify the actual completion transition produces the configured requester communication, distinct from financial approval.",
          "sources": [
            {
              "id": "CALL-0929",
              "locator": "00:17:51-00:19:36"
            }
          ],
          "notes": "Paused at the client's request on October 14, 2026 (EMAIL-1014): the Procurement review complete notice is not queued at launch. The requester still sees Complete and the history entry in Conduit. Re-enabling is a configuration change."
        },
        {
          "id": "PROC-005",
          "title": "Completion trigger still needs alignment",
          "rule": "The exact relationship among Spectrum-ready, final Procurement completion, vendor/accounting dispatch and their notification triggers needs an explicit operational contract.",
          "status": "open",
          "scope": "Procurement review and Spectrum completion",
          "check": "Human confirmation required before treating the mockup combined action as the only approved production trigger.",
          "sources": [
            {
              "id": "CALL-0929",
              "locator": "00:17:51-00:19:36"
            },
            {
              "id": "BACKLOG-0929",
              "locator": "T03; Remaining decisions and dependencies item 3"
            },
            {
              "id": "AUDIT-0924",
              "locator": "F04"
            }
          ]
        },
        {
          "id": "PROC-006",
          "title": "Manual Spectrum entry first",
          "rule": "Manual entry into Spectrum is acceptable for rollout; API integration is a later enhancement.",
          "status": "confirmed",
          "scope": "Procurement review and Spectrum completion",
          "check": "Verify the core request and review workflow can operate without an active Spectrum connector.",
          "sources": [
            {
              "id": "CALL-0929",
              "locator": "00:01:02-00:01:44; 00:06:17-00:08:18"
            }
          ]
        }
      ]
    },
    {
      "id": "numbering",
      "title": "PO and change-order numbering",
      "summary": "Latest decisions govern new numbering; existing examples and identifiers are not new-format policy.",
      "rules": [
        {
          "id": "NUM-001",
          "title": "Seven-digit new PO base",
          "rule": "New PO base numbers use two year digits followed immediately by five sequence digits, without a hyphen.",
          "status": "confirmed",
          "scope": "PO and change-order numbering",
          "check": "Verify a new 2026 base number matches 26 followed by five digits, such as 2600001.",
          "sources": [
            {
              "id": "CALL-0929",
              "locator": "00:19:37-00:20:39"
            }
          ],
          "notes": "Supersedes the September 24 spoken 26-00001 example."
        },
        {
          "id": "NUM-002",
          "title": "Spectrum length limit",
          "rule": "Identifiers imported into Spectrum must respect its stated maximum of ten characters.",
          "status": "confirmed",
          "scope": "PO and change-order numbering",
          "check": "Check the actual exported identifier, separately from the human-readable CO label, stays within ten characters.",
          "sources": [
            {
              "id": "CALL-0924",
              "locator": "00:13:21-00:14:43"
            }
          ],
          "notes": "Ten is the external maximum, not the requested length of the new base number."
        },
        {
          "id": "NUM-003",
          "title": "Ordinary PO after approval",
          "rule": "Ordinary purchases expose their PO number after approval; ER is the explicit immediate-number exception.",
          "status": "confirmed",
          "scope": "PO and change-order numbering",
          "check": "An unapproved PR has a request reference but no usable issued PO number.",
          "sources": [
            {
              "id": "CALL-0910",
              "locator": "00:20:00-00:21:17"
            }
          ]
        },
        {
          "id": "NUM-004",
          "title": "Explicit confirmation wording",
          "rule": "Identify the confirmation as a PO number rather than displaying an unexplained number alone.",
          "status": "confirmed",
          "scope": "PO and change-order numbering",
          "check": "Confirmation uses wording such as Your PO Number will be 2600001 and matches the record reference.",
          "sources": [
            {
              "id": "CALL-0929",
              "locator": "00:19:37-00:20:16"
            },
            {
              "id": "EMAIL-0928",
              "locator": "Section 3, PO Number Message"
            }
          ]
        },
        {
          "id": "NUM-005",
          "title": "Visible change sequence",
          "rule": "Identify each change with a visible sequential CO or revision label linked to the original PO so users recognize the change before opening its PDF. CO is preferred.",
          "status": "confirmed",
          "scope": "PO and change-order numbering",
          "check": "Create two changes on one PO and verify distinct sequence labels with the original PO traceable.",
          "sources": [
            {
              "id": "CALL-0929",
              "locator": "00:20:41-00:21:35"
            }
          ]
        },
        {
          "id": "NUM-006",
          "title": "Exact CO format",
          "rule": "The precise CO separator, suffix and exported numbering convention is not finalized.",
          "status": "open",
          "scope": "PO and change-order numbering",
          "check": "Human confirmation required before assigning a new external suffix convention or treating a display label as the Spectrum identifier.",
          "sources": [
            {
              "id": "CALL-0929",
              "locator": "00:20:41-00:21:35"
            },
            {
              "id": "BACKLOG-0929",
              "locator": "Remaining decisions and dependencies item 1"
            }
          ]
        },
        {
          "id": "NUM-007",
          "title": "Demo corrections and historical identifiers",
          "rule": "Correct confusing built-in mockup PO identifiers and proven saved demo references under the explicit demo-migration authorization. Preserve unrelated imported, historical, ambiguous and shared-service identifiers unless separately authorized for migration.",
          "status": "implementation",
          "scope": "Built-in local mockup and publicly served mockup examples, including positively identified saved browser demo references; not general historical renumbering.",
          "check": "Verify valve baseline 2600712, rental 2600839 and emergency 2600841 across fresh examples, proven saved references, linked changes, details and printable previews. Verify idempotence, collision refusal, preserved unrelated records and unchanged historical free-text evidence. Verify the published mockup separately after lead integration.",
          "sources": [
            {
              "id": "PO-REVIEW",
              "locator": "Final current handoff: consolidated F1–F8 pass; Evidence and scope before edits"
            },
            {
              "id": "PO-REVIEW",
              "locator": "Evidence and scope before edits; Completed fixes; Lead follow-up: legacy draft order and corrected titles; Lead follow-up: local collision guard and shared persistence"
            }
          ],
          "notes": "The user explicitly authorized this correction, including local/public examples; no further historical-migration decision is required for proven built-in demos. Preserving suffixes is a demo convention, not general numbering policy. Earlier instructions to retain old seed numbers are superseded. Reported local implementation evidence does not establish finished public deployment."
        },
        {
          "id": "NUM-008",
          "title": "Sequence mechanics",
          "rule": "Year rollover, allocator concurrency and exhaustion behavior are technical conventions requiring verification and eventual import acceptance.",
          "status": "implementation",
          "scope": "PO and change-order numbering",
          "check": "Verify duplicate prevention and rollover in the actual shared allocator; human confirmation required for unagreed business reset/suffix policies.",
          "sources": [
            {
              "id": "AUDIT-0924",
              "locator": "F09"
            },
            {
              "id": "SERVER-STORE",
              "locator": "nextPoNumber"
            }
          ],
          "notes": "Shared implementation uses an atomic year-scoped sequence and a 99,999 guard. Browser mockup allocation cannot establish multi-user uniqueness."
        }
      ]
    },
    {
      "id": "documents",
      "title": "Quotes, terms, deliverables and vendor PDFs",
      "summary": "Use supplied documents and configured choices. Do not infer legal terms from sample purchases.",
      "rules": [
        {
          "id": "DOC-001",
          "title": "Quote upload and mobile source",
          "rule": "Users with a quote attach it, including uploading a downloaded file or a photo from a phone.",
          "status": "confirmed",
          "scope": "Quotes, terms, deliverables and vendor PDFs",
          "check": "Verify normal quote attachment from desktop and phone; distinguish attachment support from deferred extraction.",
          "sources": [
            {
              "id": "CALL-0910",
              "locator": "00:04:04-00:04:40; 00:05:47-00:07:26"
            }
          ],
          "notes": "Quote yes/no remains in ordinary intake. Ordinary CR requirement and after-the-fact exceptions are separately cataloged."
        },
        {
          "id": "DOC-002",
          "title": "Deliberate cost-code choice",
          "rule": "Users deliberately select cost codes; automated extraction must not suggest a code that users merely accept without thought.",
          "status": "confirmed",
          "scope": "Quotes, terms, deliverables and vendor PDFs",
          "check": "Inspect extraction/manual entry and verify no automatic cost-code recommendation is presented as authoritative.",
          "sources": [
            {
              "id": "CALL-0910",
              "locator": "00:04:40-00:05:05"
            }
          ]
        },
        {
          "id": "DOC-003",
          "title": "Configurable payment terms",
          "rule": "Payment-term choices and the default are maintained in Configuration.",
          "status": "confirmed",
          "scope": "Quotes, terms, deliverables and vendor PDFs",
          "check": "Change the default and verify a new PR uses it without rewriting an existing PO or CR terms.",
          "sources": [
            {
              "id": "CALL-0923",
              "locator": "00:19:53-00:21:45"
            }
          ]
        },
        {
          "id": "DOC-004",
          "title": "Selectable configurable requirements",
          "rule": "Deliverables and contract instructions use selectable choices with appropriate conditional fields, and administrators can maintain the list.",
          "status": "confirmed",
          "scope": "Quotes, terms, deliverables and vendor PDFs",
          "check": "Add a configured choice, select it on a request and verify persistence and document output.",
          "sources": [
            {
              "id": "CALL-0916",
              "locator": "00:25:38-00:26:16"
            },
            {
              "id": "CALL-0923",
              "locator": "00:35:17-00:36:13"
            }
          ]
        },
        {
          "id": "DOC-005",
          "title": "Supplied checklist",
          "rule": "Include the supplied bond, startup/commissioning, O&M manual, HSE checklist, CGL insurance, holdback, WCB/equivalent clearance, RFP warranty, progress claim, new-equipment checklist, electronic-copy and hard-copy choices.",
          "status": "confirmed",
          "scope": "Quotes, terms, deliverables and vendor PDFs",
          "check": "Compare available initial choices with the supplied checklist without inventing missing required selections.",
          "sources": [
            {
              "id": "REF-DELIVERABLES",
              "locator": "Supplied deliverables and contract instructions"
            }
          ],
          "notes": "Electronic and hard copy are separate supplied options. No final exclusivity rule was specified; do not infer one from an isolated spoken aside."
        },
        {
          "id": "DOC-006",
          "title": "Holdback percentage",
          "rule": "Holdback is at PO header level. Selecting it reveals a percentage defaulted to 10%, editable for the negotiated amount.",
          "status": "confirmed",
          "scope": "Quotes, terms, deliverables and vendor PDFs",
          "check": "Select holdback, verify 10% appears and can be changed, and confirm it applies at PO level.",
          "sources": [
            {
              "id": "CALL-0923",
              "locator": "00:36:14-00:38:54"
            }
          ],
          "notes": "This is the client workflow default, not a legal assertion that every purchase must have 10% holdback."
        },
        {
          "id": "DOC-007",
          "title": "Holdback in approval summary",
          "rule": "Show holdback and its percentage in the approver summary.",
          "status": "confirmed",
          "scope": "Quotes, terms, deliverables and vendor PDFs",
          "check": "Approve a request with holdback and verify it is visible without opening every detail.",
          "sources": [
            {
              "id": "CALL-0923",
              "locator": "00:38:54-00:39:21"
            }
          ]
        },
        {
          "id": "DOC-008",
          "title": "Current holdback placement",
          "rule": "User-directed presentation places holdback first and apart from the configurable deliverables list.",
          "status": "implementation",
          "scope": "Quotes, terms, deliverables and vendor PDFs",
          "check": "Verify the highlighted holdback section appears above the checklist.",
          "sources": [
            {
              "id": "PROJECT-NOTES",
              "locator": "September 25 alpha.61 holdback placement note"
            }
          ]
        },
        {
          "id": "DOC-009",
          "title": "Clean vendor PDF",
          "rule": "Generate a readable PO from the request data with clearly presented selected requirements, line items, applicable tax percentages and totals.",
          "status": "confirmed",
          "scope": "Quotes, terms, deliverables and vendor PDFs",
          "check": "Render a long multiline PO and inspect selected requirements, numeric alignment, wrapping and pagination.",
          "sources": [
            {
              "id": "CALL-0910",
              "locator": "00:12:05-00:12:19"
            },
            {
              "id": "CALL-0916",
              "locator": "00:20:06-00:22:18"
            },
            {
              "id": "CALL-0924",
              "locator": "00:19:28-00:20:36"
            }
          ]
        },
        {
          "id": "DOC-010",
          "title": "No internal approval list on vendor copy",
          "rule": "Omit internal approval history from the vendor PDF while preserving the internal audit record.",
          "status": "confirmed",
          "scope": "Quotes, terms, deliverables and vendor PDFs",
          "check": "Compare vendor PDF with internal record: no approver listing on the vendor copy, history still available internally.",
          "sources": [
            {
              "id": "CALL-0924",
              "locator": "00:20:36-00:20:53"
            },
            {
              "id": "CALL-0924",
              "locator": "00:08:16-00:08:38"
            }
          ],
          "notes": "This supersedes the September 16 example showing approvals on the PDF. Internal notes, change reasons, budget variance explanations and emergency descriptions are internal approval content and do not print on the vendor PDF (DOC-022, decided 2026-10-18)."
        },
        {
          "id": "DOC-011",
          "title": "Remove confusing empty requirements",
          "rule": "Vendor PDFs must not show confusing unselected or duplicate requirement placeholders.",
          "status": "confirmed",
          "scope": "Quotes, terms, deliverables and vendor PDFs",
          "check": "Review the output with no selections and with several selections; the vendor can tell what is required.",
          "sources": [
            {
              "id": "CALL-0924",
              "locator": "00:19:28-00:20:09"
            }
          ],
          "notes": "Earlier None marked / Not Applicable sample labels are historical layout evidence, not a requirement to preserve the confusing September 24 presentation."
        },
        {
          "id": "DOC-012",
          "title": "Terms appropriate to purchase",
          "rule": "Materials and services can use different supplied terms; CCDC is another possible document whose selection criteria remain undecided.",
          "status": "confirmed",
          "scope": "Quotes, terms, deliverables and vendor PDFs",
          "check": "Verify configurable document choices do not automatically assign a generic sample to every purchase.",
          "sources": [
            {
              "id": "CALL-0916",
              "locator": "00:39:14-00:41:30"
            }
          ]
        },
        {
          "id": "DOC-013",
          "title": "Category and province terms rules",
          "rule": "The intended automatic terms selection uses document category and province together, then combines selected supplied terms with the PO.",
          "status": "deferred",
          "scope": "Quotes, terms, deliverables and vendor PDFs",
          "check": "When automation is accepted, test two categories and provinces against approved assignments and inspect the complete package.",
          "sources": [
            {
              "id": "CALL-0929",
              "locator": "00:26:17-00:28:00"
            }
          ],
          "notes": "September 29 explicitly accepts manual attachment for rollout. Category/province direction is settled; actual assignments and precedence are not."
        },
        {
          "id": "DOC-014",
          "title": "Manual terms attachment",
          "rule": "Procurement may download the PO and manually attach applicable terms to the outgoing email during interim operation.",
          "status": "confirmed",
          "scope": "Quotes, terms, deliverables and vendor PDFs",
          "check": "Document this working route rather than claiming incomplete automatic assembly blocks all rollout.",
          "sources": [
            {
              "id": "CALL-0929",
              "locator": "00:27:25-00:27:48"
            }
          ]
        },
        {
          "id": "DOC-015",
          "title": "Terms upload and rules usability",
          "rule": "Future terms automation must retain uploaded PDFs and make selection rules usable once documents exist, with clear prerequisite or failure messages.",
          "status": "deferred",
          "scope": "Quotes, terms, deliverables and vendor PDFs",
          "check": "Upload, reload, open rules and inspect the final PDF; confirm actual selected file pages are present.",
          "sources": [
            {
              "id": "CALL-0929",
              "locator": "00:26:17-00:27:25; 00:27:49-00:28:00"
            }
          ]
        },
        {
          "id": "DOC-016",
          "title": "Approved legal assignments needed",
          "rule": "Actual legal PDFs, category/province assignments, rule precedence and CCDC selection thresholds require approved inputs.",
          "status": "open",
          "scope": "Quotes, terms, deliverables and vendor PDFs",
          "check": "Human confirmation required; never fabricate legal language, assign the reference appendix by default or invent a CCDC threshold.",
          "sources": [
            {
              "id": "CALL-0916",
              "locator": "00:40:55-00:41:30"
            },
            {
              "id": "REF-EMAILS",
              "locator": "PO example and terms appendix"
            },
            {
              "id": "BACKLOG-0929",
              "locator": "Remaining decisions and dependencies item 4"
            }
          ]
        },
        {
          "id": "DOC-017",
          "title": "Purchase categories are reference data",
          "rule": "Use the supplied purchase types as configurable reference choices: Subcontractor, Trade (No H/B), Material (Use Supplier T&Cs), Tools/Equipment Rental, Tools/Equipment Purchase and Other.",
          "status": "confirmed",
          "scope": "Quotes, terms, deliverables and vendor PDFs",
          "check": "Compare configured purchase-type choices with the source and keep them distinct from accounting line categories.",
          "sources": [
            {
              "id": "REF-TAX",
              "locator": "Purchase type key"
            }
          ],
          "notes": "Labels alone do not authorize automatic legal-template or holdback assignments."
        },
        {
          "id": "DOC-018",
          "title": "No copied sample business details",
          "rule": "Reference PDF vendor details, signatures, contacts, amounts and invoice instructions must not become defaults for unrelated POs.",
          "status": "implementation",
          "scope": "Quotes, terms, deliverables and vendor PDFs",
          "check": "Inspect new unrelated PO output and verify values derive from its actual record and approved configuration.",
          "sources": [
            {
              "id": "SOURCE-VIDEO",
              "locator": "Screenshots; final paragraph"
            },
            {
              "id": "REF-EMAILS",
              "locator": "PO example and terms appendix"
            }
          ]
        },
        {
          "id": "DOC-019",
          "title": "Actual-file quote evidence",
          "rule": "Shared new-delta CR validation uses an actual uploaded quote record, not a claimed attachment flag or a filename alone.",
          "status": "implementation",
          "scope": "Quotes, terms, deliverables and vendor PDFs",
          "check": "Submit with a form-only attachment flag, generic attachment and actual quote; verify only supported quote evidence satisfies the ordinary requirement.",
          "sources": [
            {
              "id": "CONTRACT-0924",
              "locator": "Final clarifications"
            },
            {
              "id": "TEST-SERVER",
              "locator": "delta quote proof, immutable original, inherited requirements and additive issue only"
            }
          ]
        },
        {
          "id": "DOC-020",
          "title": "Current legal-package implementation",
          "rule": "Shared terms rules use explicitly uploaded file IDs and configured exact-match conditions with unique priorities. Lowest numeric priority wins; no default legal assignments are installed.",
          "status": "implementation",
          "scope": "Quotes, terms, deliverables and vendor PDFs",
          "check": "Verify matching against deliberately configured files and priorities, and test missing legal input without generating invented terms.",
          "sources": [
            {
              "id": "CONTRACT-0924",
              "locator": "preferences.termsRules contract"
            },
            {
              "id": "SERVER-DOCS",
              "locator": "matchingTerms"
            }
          ],
          "notes": "These are technical matching semantics, not client approval of any specific precedence or category/province legal assignment."
        },
        {
          "id": "DOC-021",
          "title": "Address in the PO header",
          "rule": "The vendor PO prints the Industra address in white inside the header band, below the logo, as on the client's PO form; the browser PO document matches.",
          "status": "confirmed",
          "scope": "Quotes, terms, deliverables and vendor PDFs",
          "check": "Render a PO and its browser preview; assert the address is white inside the header band below the logo.",
          "sources": [
            {
              "id": "CALL-1016",
              "locator": "The address is showing in white font ... Right below industra out there"
            },
            {
              "id": "REF-PO-V7-3",
              "locator": "Header"
            }
          ],
          "notes": ""
        },
        {
          "id": "DOC-022",
          "title": "Vendor-facing special instructions",
          "rule": "Special instructions on the vendor PO come only from a vendor-facing field that the requester sets and Procurement can correct. Internal notes and approval reasons (change reason, budget variance explanation, emergency description) never print on the PO.",
          "status": "confirmed",
          "scope": "Quotes, terms, deliverables and vendor PDFs",
          "check": "Issue a PO with internal notes, a change reason, a variance explanation and special instructions; assert only the special instructions print.",
          "sources": [
            {
              "id": "CALL-1016",
              "locator": "there is a special box here with the special instructions"
            },
            {
              "id": "OWNER-1018",
              "locator": "JC-1, JC-3"
            }
          ],
          "notes": "The box prints on every PO, empty when there is no text, with one bullet per line; that layout follows the client's v7_3 form and is a presentation convention, not a separate client instruction. A project or Configuration default for the field is later work."
        },
        {
          "id": "DOC-023",
          "title": "Package page count and neutral terms line",
          "rule": "Page X of Y on a PO package counts every page, including appended terms pages. The attached-terms line never shows internal values such as the terms kind or the uploaded file name.",
          "status": "confirmed",
          "scope": "Quotes, terms, deliverables and vendor PDFs",
          "check": "Assemble a package with appended terms; assert the page total includes the terms pages and the terms line shows no kind or file name.",
          "sources": [
            {
              "id": "CALL-1016",
              "locator": "page one of one discussion"
            },
            {
              "id": "OWNER-1018",
              "locator": "JC-2, JC-3"
            }
          ],
          "notes": "Rod accepted either the true count or no count (October 16); the true count was chosen because it keeps the existing footer and tests. The wording of the terms line is neutral coordinator text and may change when the client's reformatted terms arrive."
        }
      ]
    },
    {
      "id": "dates",
      "title": "Delivery, need-by and follow-up dates",
      "summary": "Requested line delivery, sourcing Need-By and later vendor-promised tracking serve different purposes.",
      "rules": [
        {
          "id": "DATE-001",
          "title": "Line-level delivery dates",
          "rule": "Move requested Delivery Date from the purchase header to individual detailed lines so different items can have different dates.",
          "status": "confirmed",
          "scope": "Delivery, need-by and follow-up dates",
          "check": "Save and reopen mixed-date purchase and change lines and verify each date survives.",
          "sources": [
            {
              "id": "EMAIL-0928",
              "locator": "Section 1, Header vs. Line Item"
            },
            {
              "id": "CALL-0929",
              "locator": "00:11:55-00:12:37"
            }
          ],
          "notes": "Apply at the relevant detailed PR/CR/ER stage. The broad email includes SR, but do not invent priced SR lines or expand minimal ER intake; DATE-006 records the unresolved SR detail."
        },
        {
          "id": "DATE-002",
          "title": "First-line date default",
          "rule": "Entering the first line delivery date defaults subsequent lines to that date, while allowing individual overrides.",
          "status": "confirmed",
          "scope": "Delivery, need-by and follow-up dates",
          "check": "Enter one date, add lines, then set a different date on one line.",
          "sources": [
            {
              "id": "CALL-0929",
              "locator": "00:12:37-00:13:00"
            }
          ]
        },
        {
          "id": "DATE-003",
          "title": "Line dates on PDF",
          "rule": "Show delivery date on each applicable PO line in the generated PDF.",
          "status": "confirmed",
          "scope": "Delivery, need-by and follow-up dates",
          "check": "Render mixed-date and multipage orders and verify each date remains with its own line.",
          "sources": [
            {
              "id": "CALL-0929",
              "locator": "00:13:04-00:13:12"
            }
          ]
        },
        {
          "id": "DATE-004",
          "title": "Delivery and Need-By sorting",
          "rule": "Provide useful delivery-date and Need-By sorting in the applicable lists, including earliest delivery first for follow-up.",
          "status": "confirmed",
          "scope": "Delivery, need-by and follow-up dates",
          "check": "Exercise ascending and descending sorting with distinct dates and missing dates.",
          "sources": [
            {
              "id": "EMAIL-0928",
              "locator": "Section 1, Dashboard & Sorting"
            },
            {
              "id": "CALL-0924",
              "locator": "00:23:23-00:24:17"
            }
          ]
        },
        {
          "id": "DATE-005",
          "title": "Default propagation and sorting conventions",
          "rule": "The mockup updates untouched default-following dates, preserves explicit overrides and clears, and sorts by earliest nonempty line date with unknowns last.",
          "status": "implementation",
          "scope": "Delivery, need-by and follow-up dates",
          "check": "Verify these exact local conventions, and obtain human confirmation before calling them client-approved edge-case policy.",
          "sources": [
            {
              "id": "CONTRACT-0929",
              "locator": "Decision defaults for this mockup"
            },
            {
              "id": "QA-0929",
              "locator": "T05-T08; Lead-notes continuation"
            }
          ]
        },
        {
          "id": "DATE-006",
          "title": "Sourcing line-date scope",
          "rule": "The email requests dates for SR lines, while the call specifies SR Need-By and retains simple need/budget sourcing. The detailed SR line model is unresolved.",
          "status": "open",
          "scope": "Delivery, need-by and follow-up dates",
          "check": "Human confirmation required before adding a compulsory priced-line or vendor-promise stage to sourcing.",
          "sources": [
            {
              "id": "EMAIL-0928",
              "locator": "Section 1 and Section 5"
            },
            {
              "id": "CALL-0929",
              "locator": "00:21:36-00:24:35"
            },
            {
              "id": "REPORT-0929",
              "locator": "Implemented scope T05-T08"
            }
          ]
        },
        {
          "id": "DATE-007",
          "title": "Vendor-promised follow-up",
          "rule": "The follow-up delivery field means the vendor promised delivery date, not the date Procurement contacted the vendor. Future tracking belongs at line level.",
          "status": "deferred",
          "scope": "Delivery, need-by and follow-up dates",
          "check": "When implemented, retain distinct per-line promises and label them clearly; do not treat a contact date as promised delivery.",
          "sources": [
            {
              "id": "CALL-0929",
              "locator": "00:13:19-00:16:07"
            }
          ],
          "notes": "Explicitly not a rollout blocker at 00:15:01-00:15:38."
        }
      ]
    },
    {
      "id": "notifications",
      "title": "Notifications, distribution and acknowledgment",
      "summary": "Approval notices, PO dispatch, provider delivery status and vendor acknowledgment must remain distinguishable.",
      "rules": [
        {
          "id": "MAIL-001",
          "title": "Immediate current-stage notice",
          "rule": "Notify the active approver immediately when their stage becomes actionable. Later approvers wait for their turn.",
          "status": "confirmed",
          "scope": "Notifications, distribution and acknowledgment",
          "check": "Submit an above-limit request and verify only the current stage gets an approval notice.",
          "sources": [
            {
              "id": "CALL-0916",
              "locator": "00:17:29-00:18:38"
            }
          ]
        },
        {
          "id": "MAIL-002",
          "title": "Daily approval reminders",
          "rule": "Remind the current approver daily until approval or rejection, then stop or move to the next stage.",
          "status": "confirmed",
          "scope": "Notifications, distribution and acknowledgment",
          "check": "Advance across days and stage transitions; verify reminders stay with the active approver and stop after action.",
          "sources": [
            {
              "id": "EMAIL-0916",
              "locator": "Reply 9"
            },
            {
              "id": "CALL-0916",
              "locator": "00:17:29-00:18:38"
            }
          ],
          "notes": "This later call resolves the September 10 tentative cadence. Exact send hour, business-day calendar and escalation timing are not client-specified."
        },
        {
          "id": "MAIL-003",
          "title": "Manual reminder",
          "rule": "Procurement can send an immediate reminder containing the current approval link.",
          "status": "confirmed",
          "scope": "Notifications, distribution and acknowledgment",
          "check": "Trigger Remind now and verify the current approver and correct request link.",
          "sources": [
            {
              "id": "CALL-0923",
              "locator": "00:01:19-00:02:23"
            }
          ],
          "notes": "SMS and clipboard were offered as possibilities, not selected mandatory channels."
        },
        {
          "id": "MAIL-004",
          "title": "Escalation requires a decision",
          "rule": "Automatic escalation to other people after delayed approval has no agreed threshold, audience or calendar.",
          "status": "open",
          "scope": "Notifications, distribution and acknowledgment",
          "check": "Human confirmation required before enabling escalation; keep ordinary current-stage daily reminders.",
          "sources": [
            {
              "id": "CALL-0910",
              "locator": "00:10:07-00:10:31"
            },
            {
              "id": "CALL-0916",
              "locator": "00:17:29-00:18:38"
            }
          ]
        },
        {
          "id": "MAIL-005",
          "title": "Approval outcome communication",
          "rule": "Notify the requester when financial approval completes or the request is rejected, using wording that reflects any remaining Procurement work.",
          "status": "confirmed",
          "scope": "Notifications, distribution and acknowledgment",
          "check": "Verify approval and rejection notifications do not falsely imply Spectrum entry or vendor dispatch.",
          "sources": [
            {
              "id": "CALL-0916",
              "locator": "00:19:11-00:20:00"
            },
            {
              "id": "CALL-0924",
              "locator": "00:18:13-00:19:16"
            }
          ],
          "notes": "Paused at the client's request on October 14, 2026 (EMAIL-1014): the Financial approval complete notice is not queued at launch. The rule remains the client's design; re-enabling is a configuration change, not a rule change."
        },
        {
          "id": "MAIL-006",
          "title": "Normal vendor distribution",
          "rule": "Normal purchases following the process require a PO to reach the vendor; the preferred automated sender is the system rather than the requester Outlook client.",
          "status": "confirmed",
          "scope": "Notifications, distribution and acknowledgment",
          "check": "Verify normal distribution has a system-send path and vendor recipient; keep readiness timing explicit.",
          "sources": [
            {
              "id": "CALL-0916",
              "locator": "00:08:04-00:08:37"
            },
            {
              "id": "CALL-0923",
              "locator": "00:46:16-00:47:51"
            }
          ],
          "notes": "The automated PO package email is paused at the client's request on October 14, 2026 (EMAIL-1014). Until it is re-enabled, Procurement downloads the exact-version package from the Distribution dialog and emails it (DOC-014). The rule text stays the intended design."
        },
        {
          "id": "MAIL-007",
          "title": "Downloadable document link",
          "rule": "The intended automated PO email contains a link to the downloadable PDF package rather than a PDF attachment.",
          "status": "confirmed",
          "scope": "Notifications, distribution and acknowledgment",
          "check": "Inspect generated automated email and follow its package link.",
          "sources": [
            {
              "id": "CALL-0923",
              "locator": "00:46:56-00:47:12"
            }
          ],
          "notes": "September 29 permits manual email attachment of terms as an interim process. Do not confuse that exception with automatic message design. The automated PO package email is paused at the client's request on October 14, 2026 (EMAIL-1014). Until it is re-enabled, Procurement downloads the exact-version package from the Distribution dialog and emails it (DOC-014). The rule text stays the intended design."
        },
        {
          "id": "MAIL-008",
          "title": "Configurable internal copies",
          "rule": "Support configured requester, PM, accounting and relevant site-superintendent copies without hardcoding personal recipients.",
          "status": "confirmed",
          "scope": "Notifications, distribution and acknowledgment",
          "check": "Review actual recipient settings and ensure the agreed internal audience receives the appropriate PO information.",
          "sources": [
            {
              "id": "CALL-0916",
              "locator": "00:09:14-00:12:18"
            },
            {
              "id": "CALL-0923",
              "locator": "00:45:19-00:45:42"
            }
          ]
        },
        {
          "id": "MAIL-009",
          "title": "Retain actual PO email evidence",
          "rule": "Copy vendor PO emails to a designated evidence mailbox so Procurement can later forward the actual email and demonstrate date and recipient.",
          "status": "confirmed",
          "scope": "Notifications, distribution and acknowledgment",
          "check": "Verify the mailbox receives the actual message, not merely an application sent-status entry.",
          "sources": [
            {
              "id": "CALL-0924",
              "locator": "00:32:01-00:32:43"
            }
          ]
        },
        {
          "id": "MAIL-010",
          "title": "Sender and mailbox inputs",
          "rule": "Production sender, evidence mailbox, exact copy mechanism and final message wording require configuration and client input.",
          "status": "open",
          "scope": "Notifications, distribution and acknowledgment",
          "check": "Human confirmation required for missing setup; do not invent a mailbox or treat mockup recipients as approved.",
          "sources": [
            {
              "id": "CALL-0923",
              "locator": "00:46:47-00:49:36"
            },
            {
              "id": "CALL-0924",
              "locator": "00:32:07-00:32:43"
            },
            {
              "id": "CALL-0929",
              "locator": "00:19:10-00:19:36"
            }
          ]
        },
        {
          "id": "MAIL-011",
          "title": "Record vendor acknowledgment",
          "rule": "Procurement can record that the vendor acknowledged receiving the PO, and that state persists and appears in PO results.",
          "status": "confirmed",
          "scope": "Notifications, distribution and acknowledgment",
          "check": "Mark acknowledgment, save, navigate away and reload; verify the list and detail agree.",
          "sources": [
            {
              "id": "CALL-0923",
              "locator": "00:51:01-00:51:49"
            },
            {
              "id": "CALL-0924",
              "locator": "00:22:02-00:23:00"
            }
          ],
          "notes": "This is receipt of the PO document, not receipt of goods or proof of email delivery."
        },
        {
          "id": "MAIL-012",
          "title": "Optional acknowledgment reference",
          "rule": "Current implementation permits acknowledgment without a sales-order reference or note, while auditing changes.",
          "status": "implementation",
          "scope": "Notifications, distribution and acknowledgment",
          "check": "Save the checkbox alone and then with a note; both persist.",
          "sources": [
            {
              "id": "CONTRACT-0924",
              "locator": "Frontend coordination alignment"
            },
            {
              "id": "CALL-0929",
              "locator": "00:14:13-00:14:21"
            }
          ],
          "notes": "A reference is useful, but the calls did not require one on every acknowledgment."
        },
        {
          "id": "MAIL-013",
          "title": "Truthful delivery states",
          "rule": "Test outbox, queued, provider accepted, delivered and vendor acknowledged are distinct states; do not label simulated or accepted mail as delivered.",
          "status": "implementation",
          "scope": "Notifications, distribution and acknowledgment",
          "check": "Inspect status wording and ensure test-only records never become live sends automatically.",
          "sources": [
            {
              "id": "SERVICES-0918",
              "locator": "Delivered; Explicit pending inputs and limits item 4"
            },
            {
              "id": "REPORT-0929",
              "locator": "Deliberate boundaries"
            }
          ]
        },
        {
          "id": "MAIL-014",
          "title": "Buyout reminder",
          "rule": "Remind the PM to update the buyout master log after PO creation; full buyout automation is later work.",
          "status": "confirmed",
          "scope": "Notifications, distribution and acknowledgment",
          "check": "Verify a configured PM reminder exists without claiming Conduit already maintains the authoritative buyout log.",
          "sources": [
            {
              "id": "CALL-0910",
              "locator": "00:15:26-00:16:48"
            }
          ],
          "notes": "Paused at the client's request on October 14, 2026 (EMAIL-1014): the buyout log reminder is not queued at launch. Re-enabling is a configuration change."
        },
        {
          "id": "MAIL-015",
          "title": "Editable notification workflows",
          "rule": "User-directed notification configuration supports per-type triggers, recipients, delays, repeat loops, maximum messages and editable subject/body.",
          "status": "implementation",
          "scope": "Notifications, distribution and acknowledgment",
          "check": "Verify configuration persists and previews do not send mail.",
          "sources": [
            {
              "id": "PROJECT-NOTES",
              "locator": "Key Decisions, September 19 campaign-style notifications"
            },
            {
              "id": "NOTIFY-CONTRACT",
              "locator": "Capabilities and boundaries"
            }
          ],
          "notes": "Client immediate/daily defaults remain the baseline. Custom example schedules are tests, not additional client-approved policy. Notification navigation may be hidden in the mockup."
        },
        {
          "id": "MAIL-016",
          "title": "Unagreed follow-up defaults stay paused",
          "rule": "Current SR and emergency-details follow-up templates start paused because automated audience and timing were not agreed.",
          "status": "implementation",
          "scope": "Notifications, distribution and acknowledgment",
          "check": "Verify a fresh configuration does not silently send these follow-ups.",
          "sources": [
            {
              "id": "NOTIFY-CONTRACT",
              "locator": "Source basis and editable defaults"
            }
          ]
        },
        {
          "id": "MAIL-017",
          "title": "Scheduler timing and deduplication",
          "rule": "Current scheduler uses Vancouver calendar days, suppresses duplicate stage/day reminders, cancels stale-stage work and does not backfill the historical archive when templates are saved.",
          "status": "implementation",
          "scope": "Notifications, distribution and acknowledgment",
          "check": "Test repeated runs, stage change, restart and local midnight without duplicate bursts.",
          "sources": [
            {
              "id": "NOTIFY-CONTRACT",
              "locator": "Capabilities and boundaries"
            }
          ],
          "notes": "Timezone and scheduler semantics are implementation conventions. The client required daily reminders, not an exact send second."
        }
      ]
    },
    {
      "id": "masters",
      "title": "Projects, vendors, cost codes and configuration",
      "summary": "Maintain operational data without waiting for integrations, and do not turn incomplete reference data into valid authority.",
      "rules": [
        {
          "id": "MASTER-001",
          "title": "Maintained master imports",
          "rule": "Provide templates and maintained imports for projects, vendors and cost codes so initial operation does not depend on an API.",
          "status": "confirmed",
          "scope": "Projects, vendors, cost codes and configuration",
          "check": "Import each master type, update an existing record and verify the updated choice is available.",
          "sources": [
            {
              "id": "CALL-0916",
              "locator": "00:27:09-00:31:08"
            },
            {
              "id": "CALL-0924",
              "locator": "00:25:12-00:25:57"
            }
          ]
        },
        {
          "id": "MASTER-002",
          "title": "Project-specific cost codes",
          "rule": "Cost-code imports and selection preserve project association; the same code across projects must not be conflated.",
          "status": "confirmed",
          "scope": "Projects, vendors, cost codes and configuration",
          "check": "Import the same code for two projects and verify each project gets its own record.",
          "sources": [
            {
              "id": "CALL-0923",
              "locator": "01:09:28-01:11:16"
            }
          ]
        },
        {
          "id": "MASTER-003",
          "title": "Meaningful import mapping",
          "rule": "Recognize supplied cost-code export headings and reduce excessive manual mapping to meaningful fields needing review.",
          "status": "confirmed",
          "scope": "Projects, vendors, cost codes and configuration",
          "check": "Use the actual customer export when available; verify meaningful columns map and empty padding does not create mapping work.",
          "sources": [
            {
              "id": "EMAIL-0928",
              "locator": "Section 7"
            },
            {
              "id": "CALL-0929",
              "locator": "00:28:01-00:28:55"
            }
          ],
          "notes": "Empty file padding was a suspected cause, not an established diagnosis. Padding handling is a tested implementation fix for representative fixtures; exact customer cost-code CSV reproduction remains pending because the available source is a screenshot."
        },
        {
          "id": "MASTER-004",
          "title": "Partial merge implementation",
          "rule": "Current imports update matching records and add new ones, preserve omitted records and unmapped fields, and clear fields only when explicitly supplied blank.",
          "status": "implementation",
          "scope": "Projects, vendors, cost codes and configuration",
          "check": "Test repeat import, partial columns and explicit blank separately.",
          "sources": [
            {
              "id": "REF-IMPORT",
              "locator": "Partial imports paragraph"
            },
            {
              "id": "TEST-FRONTEND",
              "locator": "September 25: vendor partial uploads retain omitted records and fields, including source metadata"
            }
          ]
        },
        {
          "id": "MASTER-005",
          "title": "Import identity requires confirmation",
          "rule": "Vendor Code and Project Number are used for matching; Project # plus Full Reference is a provisional cost-code identity, not confirmed uniqueness policy.",
          "status": "open",
          "scope": "Projects, vendors, cost codes and configuration",
          "check": "Human confirmation required before treating provisional identity or unknown status vocabulary as authoritative master-data rules.",
          "sources": [
            {
              "id": "REF-IMPORT",
              "locator": "Frontend alpha.60 mapping paragraph"
            }
          ]
        },
        {
          "id": "MASTER-006",
          "title": "Source financial columns are not budgets",
          "rule": "Imported cost budget/quantity and project contract columns are preserved as reference metadata; they do not automatically become requisition budgets.",
          "status": "implementation",
          "scope": "Projects, vendors, cost codes and configuration",
          "check": "Import those columns and verify no unapproved financial calculation or available-balance claim is created.",
          "sources": [
            {
              "id": "REF-IMPORT",
              "locator": "Partial imports paragraph"
            }
          ]
        },
        {
          "id": "MASTER-007",
          "title": "Active projects for intake",
          "rule": "Projects can be active or inactive, and new request selection offers active projects.",
          "status": "confirmed",
          "scope": "Projects, vendors, cost codes and configuration",
          "check": "Inactivate a project and verify it disappears from new-request selection.",
          "sources": [
            {
              "id": "CALL-0924",
              "locator": "00:26:01-00:26:53"
            }
          ]
        },
        {
          "id": "MASTER-008",
          "title": "Preserve inactive history",
          "rule": "Current implementation retains historical records and pending approvals when a project becomes inactive.",
          "status": "implementation",
          "scope": "Projects, vendors, cost codes and configuration",
          "check": "Inactivate a project with an existing PO and pending request; verify historical reads and existing approval remain available.",
          "sources": [
            {
              "id": "CONTRACT-0924",
              "locator": "project.active contract"
            },
            {
              "id": "RECON-0924",
              "locator": "Additional acceptance boundaries"
            }
          ],
          "notes": "Preservation follows the history requirement; whether new CRs against inactive-project POs need an exception remains open."
        },
        {
          "id": "MASTER-009",
          "title": "Inactive-project change exception",
          "rule": "No explicit business exception permits new CRs for an inactive project.",
          "status": "open",
          "scope": "Projects, vendors, cost codes and configuration",
          "check": "Human confirmation required before creating such an exception; current active-only intake blocks it.",
          "sources": [
            {
              "id": "RECON-0924",
              "locator": "Additional acceptance boundaries"
            },
            {
              "id": "CALL-0924",
              "locator": "00:26:16-00:26:53"
            }
          ]
        },
        {
          "id": "MASTER-010",
          "title": "Missing project and cost masters block purchase",
          "rule": "A missing vendor may proceed through setup, but missing required project or cost-code masters must be created before proceeding with the purchase.",
          "status": "confirmed",
          "scope": "Projects, vendors, cost codes and configuration",
          "check": "Verify a vendor setup request can progress while missing project/cost-code selection cannot be silently fabricated.",
          "sources": [
            {
              "id": "CALL-0910",
              "locator": "00:08:32-00:10:07"
            }
          ],
          "notes": "Minimal SR/ER intake has its own reduced requirements; full accounting lines are collected at the appropriate purchase-detail stage."
        },
        {
          "id": "MASTER-011",
          "title": "Nonblocking vendor setup request",
          "rule": "When the vendor is absent, offer a new-vendor request to accounting without holding up the PO solely for vendor-master creation.",
          "status": "confirmed",
          "scope": "Projects, vendors, cost codes and configuration",
          "check": "Capture a new vendor, verify an actual accounting handoff, and allow the PO workflow to proceed.",
          "sources": [
            {
              "id": "CALL-0910",
              "locator": "00:08:32-00:09:37"
            }
          ],
          "notes": "A saved vendorRequest flag alone does not prove the requested accounting handoff happened. Spectrum registration still depends on accounting setup."
        },
        {
          "id": "MASTER-012",
          "title": "Vendor minimum data",
          "rule": "New-vendor setup captures legal name, operating name if applicable, address, contact, phone, email and business/tax number. EFT or payment-method paperwork must not delay the initial request.",
          "status": "confirmed",
          "scope": "Projects, vendors, cost codes and configuration",
          "check": "Verify minimum fields and an optional payment-setup route, without requiring all EFT fields.",
          "sources": [
            {
              "id": "EMAIL-0916",
              "locator": "Reply 11"
            },
            {
              "id": "CALL-0916",
              "locator": "00:22:24-00:24:00"
            }
          ]
        },
        {
          "id": "MASTER-013",
          "title": "Assigned-project default with coverage",
          "rule": "Show assigned projects by default with a way to view other projects for coverage, without borrowing their assigned approvers authority.",
          "status": "confirmed",
          "scope": "Projects, vendors, cost codes and configuration",
          "check": "A covering user can find the other project and initiate work, while approvals still follow that project assignments.",
          "sources": [
            {
              "id": "CALL-0916",
              "locator": "00:32:12-00:33:33"
            }
          ]
        },
        {
          "id": "MASTER-014",
          "title": "Project instructions",
          "rule": "Store reusable delivery/site/contact instructions on the project and prepopulate requests for that project, with request-level editing available.",
          "status": "confirmed",
          "scope": "Projects, vendors, cost codes and configuration",
          "check": "Create two requests for the same project and verify consistent defaults; edit one without altering the other.",
          "sources": [
            {
              "id": "CALL-0916",
              "locator": "00:41:35-00:44:32"
            }
          ]
        },
        {
          "id": "MASTER-015",
          "title": "Unresolved source data",
          "rule": "Missing or conflicting project numbers, province associations and approval people must remain unresolved until verified rather than inferred from unrelated records.",
          "status": "implementation",
          "scope": "Projects, vendors, cost codes and configuration",
          "check": "Verify incomplete imported records are flagged and cannot silently authorize a purchase.",
          "sources": [
            {
              "id": "REF-PROJECTS",
              "locator": "Source issues preserved for internal review; Version-one implementation"
            },
            {
              "id": "PLAN-0916",
              "locator": "Initial master data and Project assignments; step 4"
            },
            {
              "id": "REPORT-0929",
              "locator": "Implemented scope T09"
            }
          ]
        },
        {
          "id": "MASTER-016",
          "title": "Editable units and categories",
          "rule": "User-directed units and line categories are configurable dropdowns. Changing options preserves saved line values.",
          "status": "implementation",
          "scope": "Projects, vendors, cost codes and configuration",
          "check": "Edit each list and verify new-line choices update while existing saved values remain.",
          "sources": [
            {
              "id": "PROJECT-NOTES",
              "locator": "Key Decisions, September 19 Unit and Category dropdowns"
            }
          ],
          "notes": "Original app Category was free text. Initial implementation choices are not a client-mandated exhaustive vocabulary or automatic purchase-type mapping."
        }
      ]
    },
    {
      "id": "visibility",
      "title": "Visibility, access and integrity",
      "summary": "Business access intent is distinct from security implementation. Client policy is not whatever a demonstration persona can click.",
      "rules": [
        {
          "id": "ACCESS-001",
          "title": "Ordinary and Procurement queues",
          "rule": "Ordinary users see their own relevant requests and approvals; Procurement can inspect queues by requester and approver to find bottlenecks.",
          "status": "confirmed",
          "scope": "Visibility, access and integrity",
          "check": "Compare ordinary-user and Procurement views and verify filters do not expose unauthorized records.",
          "sources": [
            {
              "id": "CALL-0923",
              "locator": "00:02:30-00:03:55"
            }
          ]
        },
        {
          "id": "ACCESS-002",
          "title": "Restricted future management reports",
          "rule": "Future management metrics and suspected split-change views are restricted to the agreed Procurement/management audience, not everyone.",
          "status": "deferred",
          "scope": "Visibility, access and integrity",
          "check": "When reports are enabled, verify unauthorized users cannot access them; human confirmation required for the final expanded role list.",
          "sources": [
            {
              "id": "CALL-0916",
              "locator": "00:02:31-00:05:13"
            },
            {
              "id": "CALL-0924",
              "locator": "00:34:10-00:34:55"
            }
          ]
        },
        {
          "id": "ACCESS-003",
          "title": "Server enforces authority",
          "rule": "Shared implementation authenticates users and checks permissions, current approval actor and CSRF on the server; hiding UI controls is insufficient.",
          "status": "implementation",
          "scope": "Visibility, access and integrity",
          "check": "Attempt direct unauthorized approval, correction, file and configuration requests and verify rejection.",
          "sources": [
            {
              "id": "SERVICES-0918",
              "locator": "Delivered; Verification"
            },
            {
              "id": "SERVER-WORKFLOW",
              "locator": "access; actionRequest; routeFor"
            }
          ]
        },
        {
          "id": "ACCESS-004",
          "title": "Stable submitted routes",
          "rule": "Current implementation snapshots submitted routes and rejects conflicting saves rather than silently applying changed configuration or overwriting another user.",
          "status": "implementation",
          "scope": "Visibility, access and integrity",
          "check": "Change configuration after submission and simulate competing edits; verify route stability and explicit conflict response.",
          "sources": [
            {
              "id": "SERVICES-0918",
              "locator": "Delivered"
            },
            {
              "id": "TEST-FRONTEND",
              "locator": "shared 409 preserves typed draft and does not silently retry with latest version"
            }
          ]
        },
        {
          "id": "ACCESS-005",
          "title": "No invisible switch to examples",
          "rule": "If a shared session fails, current UI keeps a reconnect state instead of substituting browser demo data as if it were the shared workspace.",
          "status": "implementation",
          "scope": "Visibility, access and integrity",
          "check": "Expire a shared session and verify the user sees the connection problem without fabricated shared records.",
          "sources": [
            {
              "id": "TEST-FRONTEND",
              "locator": "remembered shared mode gates examples on startup and stays reconnect-only when unavailable"
            }
          ]
        },
        {
          "id": "ACCESS-006",
          "title": "Production privilege setup",
          "rule": "Provision real accounts and privileged roles through controlled setup; editable directory titles alone do not grant admin or Procurement powers.",
          "status": "implementation",
          "scope": "Visibility, access and integrity",
          "check": "Change a directory title and verify privileged capability does not change.",
          "sources": [
            {
              "id": "SERVICES-0918",
              "locator": "Delivered; Explicit pending inputs and limits"
            }
          ]
        }
      ]
    },
    {
      "id": "experience",
      "title": "Navigation, mobile and usable records",
      "summary": "Keep routine procurement work easy on phones and make related records easy to find.",
      "rules": [
        {
          "id": "UX-001",
          "title": "Mobile core workflows",
          "rule": "Request creation and approval work on phones; specialized superuser functions may remain desktop-focused.",
          "status": "confirmed",
          "scope": "Navigation, mobile and usable records",
          "check": "Complete core request and approval scenarios at phone widths with usable controls.",
          "sources": [
            {
              "id": "CALL-0910",
              "locator": "00:37:19-00:38:31"
            }
          ]
        },
        {
          "id": "UX-002",
          "title": "Home-screen web app",
          "rule": "Provide app-like home-screen launch and instructions without requiring an app-store download.",
          "status": "confirmed",
          "scope": "Navigation, mobile and usable records",
          "check": "Verify installation instructions and standalone launch on an actual supported phone.",
          "sources": [
            {
              "id": "CALL-0924",
              "locator": "00:35:00-00:35:47"
            }
          ],
          "notes": "No offline, native-store app or push-notification requirement was agreed."
        },
        {
          "id": "UX-003",
          "title": "Prominent requisition number",
          "rule": "Make requisition number the primary bold identifier, with description secondary.",
          "status": "confirmed",
          "scope": "Navigation, mobile and usable records",
          "check": "Inspect requisition lists and confirm number-first presentation.",
          "sources": [
            {
              "id": "CALL-0923",
              "locator": "00:04:00-00:04:30"
            }
          ]
        },
        {
          "id": "UX-004",
          "title": "Search and results before detail",
          "rule": "Provide PO navigation with search results leading to a condensed PO detail view, with full header and view/print access.",
          "status": "confirmed",
          "scope": "Navigation, mobile and usable records",
          "check": "Find a PO, open its line snapshot and access remaining header details and preview.",
          "sources": [
            {
              "id": "CALL-0923",
              "locator": "00:52:34-00:58:34; 00:59:41-01:02:46"
            }
          ],
          "notes": "The richer vendor/job/requester search discussion allows reduced initial scope. Do not require every exploratory spreadsheet filter as a release gate."
        },
        {
          "id": "UX-005",
          "title": "Compact PO rows",
          "rule": "Show one compact row per PO including number, vendor, project, amount, creation date and relevant delivery information.",
          "status": "confirmed",
          "scope": "Navigation, mobile and usable records",
          "check": "Inspect multiple POs and verify creation date is visible rather than inferred from numbering.",
          "sources": [
            {
              "id": "CALL-0924",
              "locator": "00:23:02-00:24:24"
            }
          ]
        },
        {
          "id": "UX-006",
          "title": "Filters and sorting",
          "rule": "Support awaiting-vendor-acknowledgment filtering and useful project/date sorting in PO and request views.",
          "status": "confirmed",
          "scope": "Navigation, mobile and usable records",
          "check": "Filter acknowledged versus awaiting records and sort by the stated fields.",
          "sources": [
            {
              "id": "CALL-0924",
              "locator": "00:23:36-00:24:17"
            }
          ]
        },
        {
          "id": "UX-007",
          "title": "Related-record links",
          "rule": "Related PO and requisition numbers open the corresponding record directly.",
          "status": "confirmed",
          "scope": "Navigation, mobile and usable records",
          "check": "Navigate from request to PO and back without repeating a search.",
          "sources": [
            {
              "id": "CALL-0924",
              "locator": "00:24:24-00:25:01"
            }
          ]
        },
        {
          "id": "UX-008",
          "title": "Clear rule errors",
          "rule": "Validation identifies the rule that caused the error and points authorized users to its configuration or explanation.",
          "status": "confirmed",
          "scope": "Navigation, mobile and usable records",
          "check": "Trigger a rule error and verify understandable cause and a usable Configuration pointer.",
          "sources": [
            {
              "id": "CALL-0924",
              "locator": "00:04:05-00:05:26"
            }
          ],
          "notes": "The call does not authorize arbitrary disabling of every safeguard or a general rules programming language."
        },
        {
          "id": "UX-009",
          "title": "Easy dialog dismissal",
          "rule": "Allow clicking outside the discussed detail dialog to close it where straightforward.",
          "status": "confirmed",
          "scope": "Navigation, mobile and usable records",
          "check": "Verify outside-click close works and existing unsaved-edit protection remains.",
          "sources": [
            {
              "id": "CALL-0923",
              "locator": "00:42:51-00:43:22"
            }
          ]
        },
        {
          "id": "UX-010",
          "title": "Conduit branding",
          "rule": "Use Conduit branding; where the tagline appears its order is Procure, Build, Achieve. Avoid repeated name/tagline text beside the logo.",
          "status": "confirmed",
          "scope": "Navigation, mobile and usable records",
          "check": "Inspect navigation branding for the supplied logo and no duplicate adjacent wording.",
          "sources": [
            {
              "id": "CALL-0923",
              "locator": "01:03:19-01:04:55"
            },
            {
              "id": "CALL-0924",
              "locator": "00:27:02-00:27:11"
            }
          ]
        },
        {
          "id": "UX-011",
          "title": "Accounting spreadsheet fields need mapping",
          "rule": "Separate G/L Account, Phase and other spreadsheet-only columns are reference evidence, not proof of approved field mappings or immediate scope.",
          "status": "open",
          "scope": "Navigation, mobile and usable records",
          "check": "Human confirmation required before treating cost code as equivalent to G/L or Phase.",
          "sources": [
            {
              "id": "REF-SHEET",
              "locator": "Spreadsheet transcription; Comparison with alpha.41"
            }
          ]
        },
        {
          "id": "UX-012",
          "title": "In-app confirmations",
          "rule": "Use in-app confirmations with explicit action and Cancel controls rather than browser alert, confirm or prompt dialogs.",
          "status": "implementation",
          "scope": "Navigation, mobile and usable records",
          "check": "Exercise deletion, PO switching and unsaved navigation; verify keyboard Escape and cancellation preserve data.",
          "sources": [
            {
              "id": "PROJECT-NOTES",
              "locator": "Key Decisions, September 19 app-wide confirmation requirement"
            }
          ]
        },
        {
          "id": "UX-013",
          "title": "Hide only genuinely empty fields",
          "rule": "The Hide empty fields preference hides blank detail rows but retains meaningful zero amounts and No values without losing reviewer notes.",
          "status": "implementation",
          "scope": "Navigation, mobile and usable records",
          "check": "Toggle it on a request containing blanks, zero and No, and verify only blanks disappear.",
          "sources": [
            {
              "id": "PROJECT-NOTES",
              "locator": "September 15 Hide empty fields update"
            },
            {
              "id": "LAYOUT-PLAN",
              "locator": "Request review, details and approvals"
            }
          ]
        },
        {
          "id": "UX-014",
          "title": "Readable responsive controls",
          "rule": "Size fields to their content, preserve full long values, logical keyboard order, visible focus and usable touch controls. Avoid page-wide overflow while allowing deliberate table scrolling.",
          "status": "implementation",
          "scope": "Navigation, mobile and usable records",
          "check": "Check long values and validation at 320, 390, 768, 1024, 1440 and 1920 pixels and relevant zoom.",
          "sources": [
            {
              "id": "LAYOUT-PLAN",
              "locator": "Sizing rules; Implementation order and acceptance checks"
            }
          ]
        }
      ]
    },
    {
      "id": "future",
      "title": "Deferred integration, AI, receiving and reporting",
      "summary": "Deferred requirements remain visible for future work but are not automatically first-release blockers.",
      "rules": [
        {
          "id": "FUT-001",
          "title": "Spectrum writeback",
          "rule": "Future integration should remove duplicate entry of project number, tax data and line items into Spectrum, while vendor-facing deliverables remain on the PDF.",
          "status": "deferred",
          "scope": "Deferred integration, AI, receiving and reporting",
          "check": "When scoped, compare the verified finance mapping and confirm transfer success before marking ready.",
          "sources": [
            {
              "id": "CALL-0910",
              "locator": "00:17:00-00:18:06"
            },
            {
              "id": "CALL-0929",
              "locator": "00:06:17-00:08:18"
            }
          ]
        },
        {
          "id": "FUT-002",
          "title": "Finance-system access and mappings",
          "rule": "Spectrum access, API documentation, tax examples and any later Procore migration require Finance coordination and verified mappings.",
          "status": "open",
          "scope": "Deferred integration, AI, receiving and reporting",
          "check": "Human confirmation required for integration inputs; do not claim either system is connected from import screens alone.",
          "sources": [
            {
              "id": "CALL-0916",
              "locator": "00:24:13-00:25:05; 00:55:55-00:56:10"
            },
            {
              "id": "EMAIL-0916",
              "locator": "AI Questions"
            }
          ]
        },
        {
          "id": "FUT-003",
          "title": "Human-reviewed extraction",
          "rule": "Future quote/invoice/photo extraction proposes values for human review before applying them and preserves deliberate cost-code selection.",
          "status": "deferred",
          "scope": "Deferred integration, AI, receiving and reporting",
          "check": "Use varied real source formats and verify a human can compare, edit and confirm before application.",
          "sources": [
            {
              "id": "CALL-0916",
              "locator": "00:53:14-00:55:50"
            },
            {
              "id": "CALL-0923",
              "locator": "00:39:36-00:42:44"
            }
          ]
        },
        {
          "id": "FUT-004",
          "title": "Stack AI coordination",
          "rule": "Coordinate future document-to-form extraction with the client Stack AI initiative rather than assuming a new extraction deployment or access grant.",
          "status": "deferred",
          "scope": "Deferred integration, AI, receiving and reporting",
          "check": "Await the actual agent design and explicit interface/access requirements.",
          "sources": [
            {
              "id": "CALL-0929",
              "locator": "00:29:00-00:30:30"
            }
          ]
        },
        {
          "id": "FUT-005",
          "title": "Guided sourcing assistance",
          "rule": "Future internal sourcing assistance may prompt for missing quantity, size, material, duration or scope without requiring staff personal AI subscriptions.",
          "status": "deferred",
          "scope": "Deferred integration, AI, receiving and reporting",
          "check": "When scoped, test incomplete sourcing descriptions and distinguish real AI from deterministic prompts.",
          "sources": [
            {
              "id": "CALL-0916",
              "locator": "00:56:13-00:59:07"
            },
            {
              "id": "COVERAGE-0919",
              "locator": "Covered in the implementation: September 19 AI deferral"
            }
          ]
        },
        {
          "id": "FUT-006",
          "title": "Receiving later",
          "rule": "Defer receiving-entry UI. Future receiving must support different lines, receivers and dates, not only a single PO amount.",
          "status": "deferred",
          "scope": "Deferred integration, AI, receiving and reporting",
          "check": "Do not require the receiving UI for current rollout; future tests must cover partial line receipts and different receivers/dates.",
          "sources": [
            {
              "id": "CALL-0923",
              "locator": "00:49:37-00:51:01"
            }
          ],
          "notes": "This does not remove the confirmed received-value floor or erase verified existing receipts."
        },
        {
          "id": "FUT-007",
          "title": "Management KPIs later",
          "rule": "Defer dashboards/KPIs independently of initial release. Candidate metrics include after-the-fact volume, requests per user, login usage, acknowledgment time and on-time delivery.",
          "status": "deferred",
          "scope": "Deferred integration, AI, receiving and reporting",
          "check": "Keep current release gates separate; obtain the final metric definitions and real source data before reporting performance.",
          "sources": [
            {
              "id": "CALL-0924",
              "locator": "00:32:52-00:34:55"
            }
          ]
        },
        {
          "id": "FUT-008",
          "title": "Activity and bottleneck evidence",
          "rule": "Retain timestamps and activity needed to measure procurement output, change-order work and time spent at each approval stage.",
          "status": "confirmed",
          "scope": "Deferred integration, AI, receiving and reporting",
          "check": "Verify both new POs and changes create traceable activity; later reporting must not count only PO creation.",
          "sources": [
            {
              "id": "CALL-0910",
              "locator": "00:22:00-00:23:44"
            }
          ],
          "notes": "Data capture supports later reporting; no fixed bottleneck threshold was specified."
        },
        {
          "id": "FUT-009",
          "title": "Potential split-change review",
          "rule": "Future restricted reports help Procurement inspect repeated changes near approval limits without changing per-change routing or automatically accusing users.",
          "status": "deferred",
          "scope": "Deferred integration, AI, receiving and reporting",
          "check": "When enabled, show source requests and transparent criteria; no automatic misconduct verdict or extra approval stage.",
          "sources": [
            {
              "id": "CALL-0916",
              "locator": "00:02:26-00:05:13"
            },
            {
              "id": "CALL-0923",
              "locator": "00:10:49-00:12:11"
            }
          ],
          "notes": "The reporting direction is retained, but visible Review policy/reporting was removed from immediate scope."
        },
        {
          "id": "FUT-010",
          "title": "Buyout automation later",
          "rule": "Automatic buyout-log calculation is a later operational enhancement, beyond the initial reminder.",
          "status": "deferred",
          "scope": "Deferred integration, AI, receiving and reporting",
          "check": "Do not claim an automatically maintained buyout ledger from the reminder setting alone.",
          "sources": [
            {
              "id": "CALL-0910",
              "locator": "00:15:26-00:16:48"
            }
          ]
        },
        {
          "id": "FUT-011",
          "title": "Separate adjacent AI ideas",
          "rule": "Tender monitoring, policy Q&A and autonomous better-quote sourcing were future or separately scoped ideas, not current Conduit release requirements.",
          "status": "deferred",
          "scope": "Deferred integration, AI, receiving and reporting",
          "check": "Do not add them as current release gates or claim they are delivered.",
          "sources": [
            {
              "id": "CALL-0910",
              "locator": "00:24:53-00:33:52; 00:36:29-00:37:18"
            }
          ],
          "notes": "Tender monitoring explicitly belongs to another group and requires its own decision."
        }
      ]
    },
    {
      "id": "release",
      "title": "Release acceptance and operational evidence",
      "summary": "Passing a browser demonstration is not evidence of shared approvals, real messages or external-system transfer.",
      "rules": [
        {
          "id": "REL-001",
          "title": "Actual workflow testing",
          "rule": "Test ordinary workflows, reported failures and relevant edge cases before inviting the client team, and provide recorded workflow evidence.",
          "status": "confirmed",
          "scope": "Release acceptance and operational evidence",
          "check": "Review actual-app PR/CR/SR/ER, approvals, corrections, uploads/imports and notification test outcomes and videos.",
          "sources": [
            {
              "id": "CALL-0910",
              "locator": "00:46:08-00:47:22"
            },
            {
              "id": "CALL-0929",
              "locator": "00:03:18-00:05:39"
            }
          ]
        },
        {
          "id": "REL-002",
          "title": "Multi-user sandbox acceptance",
          "rule": "Use a test project and distinct role identities to verify sequential approvals and controlled test notification delivery before company rollout.",
          "status": "confirmed",
          "scope": "Release acceptance and operational evidence",
          "check": "Run the group scenario with participants confirming who receives what, including actual controlled test inboxes.",
          "sources": [
            {
              "id": "CALL-0924",
              "locator": "00:28:00-00:31:43; 00:35:51-00:36:21"
            },
            {
              "id": "CALL-0929",
              "locator": "00:01:44-00:02:39"
            }
          ],
          "notes": "Test targets discussed in calls are not evidence of readiness. Mocked outbox tests do not satisfy actual inbox delivery."
        },
        {
          "id": "REL-003",
          "title": "End-user SOP and training",
          "rule": "Provide a user-level SOP and training material after workflows stabilize, aligned with the company procurement policy requiring Conduit.",
          "status": "confirmed",
          "scope": "Release acceptance and operational evidence",
          "check": "Check that ordinary staff can follow PR/CR/SR/ER and approval instructions, not only admin setup notes.",
          "sources": [
            {
              "id": "CALL-0924",
              "locator": "00:36:23-00:37:21"
            }
          ]
        },
        {
          "id": "REL-004",
          "title": "Mockup versus shared state",
          "rule": "Alpha.63 Spectrum completion and requester notice are browser-local; shared Spectrum support, server line-date PDFs and actual completion notifications are not established by that release.",
          "status": "implementation",
          "scope": "Release acceptance and operational evidence",
          "check": "Verify local and shared modes separately and do not mark shared acceptance passed from local UI evidence.",
          "sources": [
            {
              "id": "REPORT-0929",
              "locator": "Deliberate boundaries"
            },
            {
              "id": "QA-0929",
              "locator": "Test status and boundaries"
            }
          ]
        },
        {
          "id": "REL-005",
          "title": "Known numbering parity gap",
          "rule": "Current shared server still generates YY-NNNNN, while the alpha.63 browser mockup generates YYNNNNN.",
          "status": "implementation",
          "scope": "Release acceptance and operational evidence",
          "check": "Check both allocators; shared new numbering fails NUM-001 until corrected.",
          "sources": [
            {
              "id": "SERVER-STORE",
              "locator": "Store.nextPoNumber"
            },
            {
              "id": "APP-CURRENT",
              "locator": "nextPoNumber"
            }
          ],
          "notes": "This is an observed source-code difference, not authorization to modify the application in this research task."
        },
        {
          "id": "REL-006",
          "title": "Recorded QA limits",
          "rule": "Alpha.63 reports 138 passing tests and local browser/print QA, but does not establish exact customer cost-code CSV reproduction, multi-user acceptance or live Spectrum writes.",
          "status": "implementation",
          "scope": "Release acceptance and operational evidence",
          "check": "Read the recorded evidence and preserve its stated test boundaries in release reporting.",
          "sources": [
            {
              "id": "REPORT-0929",
              "locator": "Validation; Deliberate boundaries"
            },
            {
              "id": "QA-0929",
              "locator": "Test status and boundaries"
            }
          ],
          "notes": "This researcher inspected tests and reports but did not rerun application tests for the catalog-only change."
        },
        {
          "id": "REL-007",
          "title": "Implementation cannot define policy",
          "rule": "Old Power App, Power Automate and current code are evidence of behavior, not authority to override later explicit client requirements.",
          "status": "implementation",
          "scope": "Release acceptance and operational evidence",
          "check": "When code disagrees with a confirmed rule, report the mismatch rather than changing the rule to match code.",
          "sources": [
            {
              "id": "FLOW-OLD",
              "locator": "Confirmed behavior"
            },
            {
              "id": "CALL-0916",
              "locator": "00:00:08-00:00:35"
            },
            {
              "id": "CALL-0923",
              "locator": "00:08:07-00:09:35"
            }
          ],
          "notes": "Old director-author shortcuts and PM routes differ from the later agreed project-based PM/PD/DM/executive sequence."
        },
        {
          "id": "REL-008",
          "title": "Status-aware future checking",
          "rule": "A confirmed row records a requirement, not successful implementation. Open rows require human decisions; deferred rows are future scope; implementation rows document behavior or conventions.",
          "status": "implementation",
          "scope": "Release acceptance and operational evidence",
          "check": "The future checker must report these categories separately and never automatically fail release on all deferred/open rows.",
          "sources": [
            {
              "id": "BACKLOG-0929",
              "locator": "Explicitly deferrable work and interim operation; Remaining decisions and dependencies"
            },
            {
              "id": "REPORT-0929",
              "locator": "Deliberate boundaries"
            }
          ]
        },
        {
          "id": "REL-009",
          "title": "Visible version history",
          "rule": "Each completed mockup update increments the alpha version and adds a history entry; retrospective history stays labeled as retrospective.",
          "status": "implementation",
          "scope": "Release acceptance and operational evidence",
          "check": "Compare app footer, asset version references and history for the released update.",
          "sources": [
            {
              "id": "PROJECT-NOTES",
              "locator": "Key Decisions, September 22 alpha-versioning instruction"
            }
          ]
        },
        {
          "id": "REL-010",
          "title": "Correct confusing demos without inventing operational facts",
          "rule": "Review all confusing built-in PO/request examples and correct demonstrated inconsistencies using verified fixture provenance and configuration. Clearly label illustrative states and missing inputs rather than presenting them as actual approvals, receipts or complete business records.",
          "status": "implementation",
          "scope": "Authorized adversarial review of local and public mockup examples, including safe migration of proven saved demo state.",
          "check": "Review route recipients, date sorting, project delivery/contact/coding, Procurement state, emergency completion, province taxes, approval/audit presentation and sourcing confirmation. Check deterministic fixes preserve explicit saved values and recorded edits, unsupported values remain visibly unspecified, and public examples are verified after publication. Do not treat a legacy replacement-style CR with missing quote as a complete current additive-CR example.",
          "sources": [
            {
              "id": "PROJECT-NOTES",
              "locator": "September 25 alpha.62 sample-date note"
            },
            {
              "id": "REALISM-0925",
              "locator": "Evidence and standards; Resolved, valid states and uncertainty"
            },
            {
              "id": "PO-REVIEW",
              "locator": "Extended fixture-detail audit: evidence before changes; Extended fixture-detail corrections completed"
            },
            {
              "id": "PO-REVIEW",
              "locator": "Final current handoff: consolidated F1–F8 pass, findings F1-F8, safety boundaries and lead action"
            }
          ],
          "notes": "This is an authorized implementation-quality requirement, not new client accounting policy. The teammate reports deterministic local fixes and 94 passing workflow tests, with inputs still unresolved. Actual delivery/contact data, province configuration, cost allocations, rental unit/category and original emergency intake values must not be invented. Reported tests do not establish public deployment; illustrative setup history is not actual approval evidence."
        },
        {
          "id": "REL-011",
          "title": "Shared SR Need-By validation gap",
          "rule": "Current shared SR submission validates the sourcing need but does not require Need-By, unlike the browser validation.",
          "status": "implementation",
          "scope": "Current local/shared implementation, September 29 source inspection",
          "check": "Verify the direct shared API enforces SR-003 before claiming end-to-end compliance.",
          "sources": [
            {
              "id": "SERVER-WORKFLOW",
              "locator": "submit, SR branch"
            },
            {
              "id": "APP-CURRENT",
              "locator": "validateCurrentStep"
            }
          ],
          "notes": "Static source finding, not a fresh runtime reproduction."
        },
        {
          "id": "REL-012",
          "title": "After-the-fact delta quote mismatch",
          "rule": "Current local and shared delta-CR quote gates do not exclude after-the-fact changes, conflicting with the earlier reduced-document exception.",
          "status": "implementation",
          "scope": "Current local/shared implementation, September 29 source inspection",
          "check": "Test a new after-the-fact delta CR without a quote; do not claim ATF-003 passes based on legacy replacement-CR tests.",
          "sources": [
            {
              "id": "APP-CURRENT",
              "locator": "validateCurrentStep, delta CR quote condition"
            },
            {
              "id": "SERVER-WORKFLOW",
              "locator": "submit, isDelta quote condition"
            },
            {
              "id": "CALL-0916",
              "locator": "00:51:00-00:51:54"
            }
          ],
          "notes": "Static source finding. Reconcile explicitly with the confirmed exception; do not silently rewrite business policy to match code."
        }
      ]
    }
  ],
  "reviewGuidance": [
    "A confirmed requirement describes what the product must do. It does not mean the feature has been built or tested.",
    "A rule marked Needs a decision requires a human answer. Do not invent an answer or use it as an automatic pass or fail.",
    "Agreed for later rules remain in scope for the future. Do not treat them as launch blockers unless a later decision changes their priority.",
    "Current implementation records a technical choice or existing behavior. It is not proof that the client approved that behavior.",
    "Check the rule’s scope before testing. A browser-local mockup result does not prove that the shared app, server PDF or real email delivery works.",
    "Follow the latest explicit decision on the same subject. Keep earlier evidence for context; do not assume that a later unrelated comment replaces a rule.",
    "For each review, record the rule ID, version being tested, observed evidence and result: pass, fail, not tested, not applicable, or needs a decision. Never treat missing evidence as a pass.",
    "Report conflicts and missing configuration to a human. This reference does not authorize changing approval limits, legal terms, access rights or live records."
  ],
  "statusDefinitions": {
    "confirmed": "Client requirement, not proof of implementation.",
    "open": "Requires a human decision; do not automatically pass or fail.",
    "deferred": "Agreed future work; not a current release gate unless re-prioritized.",
    "implementation": "Technical choice or existing behavior, not necessarily client policy."
  }
}
