Skip to content

M1-09: Add amountIn mismatch STOP fixture #20

Closed

Description

@pillowtalk-Qy
Type: Deterministic Fixture
Priority: P0 / trust boundary
Initial status: Blocked
Owner: QA
Depends on: #6 merged; 与 #8 协调文件
Blocks: Gate A main scenario, #9
Writable: packages/report-schema/fixtures/**, tests, approved fixture docs

唯一目标

建立“用户授权 1 MON,Capability/Simulation 为 10 MON,模拟成功但 STOP”的稳定合成场景。

固定数据合同

intent amountIn     = 1000000000000000000
observed amountIn   = 10000000000000000000
all token amounts   = integer strings; never JavaScript Number
provenance          = FIXTURE
alignment           = critical FAIL
decision            = STOP

验收

[ ] 值固定且 deterministic
[ ] reason code 和 raw refs exact
[ ] report schema 通过
[ ] engine 重算同一 STOP
[ ] simulation SUCCESS 不覆盖 authorization mismatch
[ ] 不使用真实 account/token/protocol 地址

验证

pnpm vitest run packages/report-schema/test
pnpm vitest run packages/decision-engine/test
pnpm check
jq '{intent:.intent.inputAmount,capability:.capability.raw,simulation:.simulation.outcomes,alignment:.alignment,decision:.decision}' packages/report-schema/fixtures/amount-in-mismatch.v0.1.json
git diff --check

Codex 指令

以 main 的 success fixture 和 #8 最终结构为参考,建立独立 amountIn mismatch。
只用 synthetic/FIXTURE 数据;不要改 Schema、Engine、UI 或联网。

Activity

  1. pillowtalk-Qy commented on Aug 3, 2026

    @pillowtalk-Qy
    ContributorAuthor

    DEPENDENCY_GATE_CLEARED

    Issue #6 has been squash-merged into main@aa7ea761b2ac5e78535387e0a7d04d45485cdfb1.
    The merged-main push quality-gate is SUCCESS: https://github.com/Moss-Mini-Demo/moss-mini-demo/actions/runs/30833497929/job/91752910028

    Issue #20 is dependency-ready but remains unclaimed while #8 is In Progress. It must use the latest main and still requires its own Work Plan, scope confirmation, QA, and current-head Maintainer Gate.

    Ready does not mean SCOPE_CONFIRMED, implementation start, Review, Merge Gate, or merge authorization. Qy must not claim or start #20 while #8 is In Progress.

  2. added and removed
    status:blockedBlocked by an unresolved dependency
    on Aug 3, 2026
  3. self-assigned this
    on Aug 4, 2026
  4. pillowtalk-Qy commented on Aug 4, 2026

    @pillowtalk-Qy
    ContributorAuthor

    SERIAL_SLOT_RELEASED / BUILDER_CLAIM_ACCEPTED

    Issue #8 and PR #67 are complete at main@c52384448e0016d36f2e723f8cdf37f10315e1c8.
    The merged-main push quality-gate is SUCCESS: https://github.com/Moss-Mini-Demo/moss-mini-demo/actions/runs/30870163331/job/91870347140

    Maintainer accepts Qy as the execution owner for the planning phase of Issue #20.

    • Base: origin/main@c52384448e0016d36f2e723f8cdf37f10315e1c8
    • Planned branch: codex/issue-20-amountin-mismatch-stop-fixture
    • Planned worktree: /Users/qy/Documents/moss-mini-demo-issue-20; no branch or worktree is created by this status operation
    • Unique target: deterministic synthetic/FIXTURE amountIn mismatch STOP fixture
    • Fixed planning contract: intent amountIn 1000000000000000000, observed amountIn 10000000000000000000, integer strings, provenance FIXTURE, critical Alignment FAIL, Decision STOP
    • Proposed writable envelope, subject to separate Maintainer scope confirmation: the dedicated Fixture, its integration test, and approved Fixture documentation only
    • First evidence: a closed Work Plan and a current-main fact list

    Issue #20 is In Progress for planning only. Builder must submit the closed Work Plan before creating a branch, worktree, commit, or PR. This record is not SCOPE_CONFIRMED, implementation authorization, QA PASS, Maintainer Review, Merge Gate, or merge authorization.

    Issue #9 remains Blocked. Issues #23, #24, and #32 remain Ready and unassigned.

  5. pillowtalk-Qy commented on Aug 4, 2026

    @pillowtalk-Qy
    ContributorAuthor

    Final Implementation Work Plan - Awaiting Maintainer Scope Confirmation

    1. Source, dependency gate, and planning status

    This closed Work Plan is submitted by Builder Qy under the accepted planning
    claim:
    #20 (comment)

    Dependency and current-main evidence:

    Issue #20 is In Progress for planning only. This comment requests
    SCOPE_CONFIRMED / IMPLEMENTATION_AUTHORIZED; it does not claim that gate,
    create a branch/worktree, edit files, commit, push, or create a PR.

    2. Exact implementation identity

    • Issue: M1-09: Add amountIn mismatch STOP fixture #20, M1-09 Add amountIn mismatch STOP fixture
    • Proposed branch: codex/issue-20-amountin-mismatch-stop-fixture
    • Proposed isolated worktree:
      /Users/qy/Documents/moss-mini-demo-issue-20
    • Required base: exact latest origin/main; if main differs from
      c52384448e0016d36f2e723f8cdf37f10315e1c8 after scope confirmation,
      Builder must stop and rescan the new main before creating the branch
    • Proposed Draft PR title:
      M1-09: add amountIn mismatch STOP fixture
    • PR linkage: Closes #20

    3. Exact writable scope

    Only these three paths are requested:

    1. packages/report-schema/fixtures/amount-in-mismatch.v0.1.json
    2. packages/decision-engine/test/amount-in-mismatch.fixture.test.ts
    3. packages/report-schema/fixtures/README.md

    No wildcard path is requested. Any fourth path requires a new Maintainer Scope
    Gate.

    4. Merged-main facts and package boundary

    The plan relies only on content merged at
    main@c52384448e0016d36f2e723f8cdf37f10315e1c8:

    • @moss-mini-demo/report-schema publicly exports
      PreflightReportSchema and DecisionInputV0_1Schema.
    • @moss-mini-demo/decision-engine publicly exports runtime
      evaluateDecisionV0_1.
    • The merged success and tokenOut Fixtures establish the complete report
      structure, synthetic FIXTURE provenance, favorable evidence shape,
      non-authorization language, and Fixture README ownership.
    • ADR 0004 requires CRITICAL_ALIGNMENT_FAIL to carry the union of the
      triggering critical Alignment's validated underlying input references.
    • Root scripts build report-schema before decision-engine and run both public
      package-name smoke tests.
    • A decision-engine package integration test must not statically resolve its
      own unbuilt dist during clean-checkout root typecheck.

    The new test will therefore:

    • live in packages/decision-engine/test;
    • read the report-schema-owned Fixture through the explicit relative glob
      ../../report-schema/fixtures/amount-in-mismatch.v0.1.json;
    • construct @moss-mini-demo/report-schema and
      @moss-mini-demo/decision-engine with join("/");
    • load both runtime public packages with import(variable) only after the
      explicit root build;
    • never import a private src path, copy a Schema/evaluator, add a package
      edge, or make a test run a build internally.

    5. Amount-specific synthetic data contract

    The new Fixture is a complete PreflightReport v0.1 with these fixed synthetic
    values:

    • schemaVersion: "0.1"
    • reportId: 99999999-9999-4999-8999-999999999999
    • generatedAt: 2031-05-06T07:08:09.000Z
    • network: eip155:99999999999999999999999999999999
    • provenance: FIXTURE
    • account: 0x5555555555555555555555555555555555555555
    • recipient: 0x6666666666666666666666666666666666666666
    • input asset: { "kind": "NATIVE" }
    • output asset:
      { "kind": "ERC20", "address": "0x7777777777777777777777777777777777777777" }
    • protocol ID: synthetic-amount-in-mismatch-protocol
    • Quote ID: synthetic-amount-in-mismatch-quote-v0-1
    • every raw payload includes
      "origin": "synthetic-development-fixture"

    The exact amount contract is:

    Meaning JSON location Fixed serialized value
    User intent amountIn /intent/inputAmount "1000000000000000000"
    Capability-prepared amountIn /capability/raw/amountIn "10000000000000000000"
    Simulated Outcome amountIn /simulation/outcomes/items/0/raw/amountIn "10000000000000000000"

    The Issue describes these as the synthetic 1-versus-10 native-unit scenario.
    The Fixture does not add token symbol/decimal metadata and does not claim a
    real Monad asset or network observation. Every amount, including Quote input
    and output amounts, is a canonical decimal integer string and is never a JSON
    number or JavaScript Number.

    The successful Quote must keep inputAmount equal to the Intent
    inputAmount, "1000000000000000000", so the selected Quote remains valid
    under the merged Schema. The 10x discrepancy exists only in the synthetic
    Capability raw artifact and simulated Outcome raw artifact.

    6. Explicit separation from the tokenOut Fixture

    The #8 merged structure is reused only for package placement, public-boundary
    validation, favorable evidence, and clean-checkout execution order.

    The #20 Fixture and test must not copy the #8 mismatch data contract:

    • no tokenOut raw field;
    • no /intent/outputAsset/address mismatch reference;
    • no
      /simulation/outcomes/items/0/raw/tokenOut/address reference;
    • no M1-05: Add tokenOut mismatch STOP fixture #8 report ID, protocol ID, Quote ID, Alignment check ID, limitation code,
      or intended/observed tokenOut values.

    #20 exclusively tests an amountIn authorization/preparation/simulation
    mismatch through the three amount-specific locations in section 5.

    7. Favorable evidence retained

    The amountIn mismatch must be the only STOP trigger:

    • selection is SELECTED and references the matching successful synthetic
      Quote;
    • Capability is AVAILABLE;
    • simulation is AVAILABLE with executionStatus: SUCCESS;
    • Receipts are AVAILABLE, non-empty, and all SUCCESS;
    • Outcomes are AVAILABLE, non-empty, and all SUCCESS; Outcome raw owns
      the simulated 10x amountIn;
    • Warnings are AVAILABLE with an empty items array;
    • coverage is AVAILABLE with complete: true;
    • ordering is AVAILABLE with valid: true;
    • state continuity is AVAILABLE with continuous: true.

    Simulation SUCCESS cannot override the amountIn mismatch.

    8. Critical Alignment and exact Decision

    The Fixture contains exactly one decision-critical amountIn Alignment check:

    • checkId: synthetic-amount-in-alignment
    • critical: true
    • status: FAIL
    • exact canonical SourceReferences, in ascending UTF-8 order:
      1. /capability/raw/amountIn
      2. /intent/inputAmount
      3. /simulation/outcomes/items/0/raw/amountIn

    All three references resolve to underlying inspectable source values. They do
    not target /alignment, decision, limitations, presentation data,
    extension data, prose, or schema-owned sourceReferences metadata.

    The complete Decision is exactly:

    {
      "status": "STOP",
      "reasons": [
        {
          "code": "CRITICAL_ALIGNMENT_FAIL",
          "sourceReferences": [
            "/capability/raw/amountIn",
            "/intent/inputAmount",
            "/simulation/outcomes/items/0/raw/amountIn"
          ]
        }
      ]
    }

    No additional STOP reason, explanation, severity, confidence, approval,
    signability, executability, or presentation field is permitted.

    The Fixture limitation uses
    SYNTHETIC_AMOUNT_IN_MISMATCH_FIXTURE_ONLY and states that:

    • the file is only a synthetic development Fixture for Schema and Engine
      regression validation;
    • simulation SUCCESS does not override the amountIn mismatch;
    • the 1-versus-10 values are synthetic integer strings, not token, protocol,
      wallet, RPC, Quote, Receipt, simulation, or chain evidence;
    • MANUAL_REVIEW is not a safety conclusion, approval, authorization,
      execution guarantee, or permission to sign;
    • STOP is a structured fail-closed result, not a safety proof or
      transaction authorization.

    Its SourceReferences are exactly the same three amount-specific references.

    9. Decision-engine integration test plan

    packages/decision-engine/test/amount-in-mismatch.fixture.test.ts must prove:

    1. The dedicated Fixture exists and JSON.parse succeeds.
    2. Public PreflightReportSchema.safeParse(fixture) succeeds.
    3. provenance is exactly FIXTURE.
    4. Report ID, time, network, account, recipient, protocol, Quote, assets, and
      raw-origin markers equal the fixed synthetic values.
    5. Intent amountIn is exactly string "1000000000000000000".
    6. Selected successful Quote inputAmount equals the Intent amount.
    7. Capability raw amountIn is exactly string
      "10000000000000000000".
    8. Simulated Outcome raw amountIn is exactly the same 10x string.
    9. Capability and simulated amounts are equal to each other and unequal to the
      Intent amount.
    10. Every tested amount value is a string matching the canonical integer
      pattern; no amount is represented as a number.
    11. selection, Capability, simulation, Receipts, Outcomes, Warnings, coverage,
      ordering, and continuity retain the favorable conditions from section 7.
    12. The one critical Alignment is FAIL.
    13. Its references exactly equal the three amount-specific pointers in
      canonical order.
    14. Alignment, Decision, and limitation references contain no tokenOut or
      output-asset mismatch pointer.
    15. The Fixture Decision is STOP with exactly one reason.
    16. The only reason code is CRITICAL_ALIGNMENT_FAIL.
    17. Decision references exactly equal the critical Alignment references.
    18. Removing decision and limitations produces an input accepted by
      public DecisionInputV0_1Schema.
    19. Public evaluateDecisionV0_1(input) deeply equals the embedded Fixture
      Decision.
    20. Repeated evaluation is deeply equal and does not mutate the validated
      input.
    21. Simulation remains SUCCESS and does not suppress STOP.
    22. The limitation preserves synthetic-only, mismatch, and non-authorization
      language.
    23. The existing success and tokenOut Fixtures remain unchanged and their
      existing tests stay green.
    24. No test performs network, RPC, wallet, signing, transaction, or other
      external behavior.

    The test validates a Fixture containing a synthetic critical Alignment result.
    It does not implement amountIn comparison or duplicate future Alignment/Core
    business logic.

    10. Fixture README update

    packages/report-schema/fixtures/README.md will receive one minimal stable
    fact update:

    • retain the success and tokenOut entries unchanged in meaning;
    • add amount-in-mismatch.v0.1.json as the synthetic 1-versus-10 amountIn
      case where simulation succeeds, the critical Alignment fails, and the exact
      Decision is CRITICAL_ALIGNMENT_FAIL STOP;
    • state that all three Fixtures use synthetic FIXTURE provenance;
    • retain that no Fixture, MANUAL_REVIEW, STOP, or green CI is evidence,
      a safety conclusion, approval, authorization, execution guarantee, or
      permission to sign.

    The README will not mention a PR, Draft state, review, Merge Gate, or another
    short-lived lifecycle state.

    11. Exact non-goals

    This implementation will not:

    • implement amountIn Alignment calculation or any business behavior;
    • modify the success or tokenOut Fixture;
    • modify an existing test;
    • create another success/STOP Fixture;
    • start M1-06: Document M1 evidence boundary and completion criteria #9, any M2 Issue, or another Issue;
    • modify report-schema source, Decision Engine source, package metadata,
      dependencies, lockfile, workspace, aliases, TypeScript paths, lifecycle
      scripts, public exports, ADR, STOP presentation, root README,
      docs/real-vs-mock.md, workflow, protection, required checks, governance,
      Issue/Project state, Milestone, labels, or permissions;
    • add committed dist, network access, UI, frontend, backend, RPC, Moss,
      Monad, protocol adapter, wallet, signing, transaction, Clear402, deployment,
      secret, real address, or live-chain evidence;
    • treat a successful synthetic simulation, MANUAL_REVIEW, STOP, a
      Fixture, or CI as safety, approval, authorization, signability, or
      executability.

    12. Implementation sequence after authorization

    1. Fetch and verify exact latest origin/main, merged-main CI, Issue M1-09: Add amountIn mismatch STOP fixture #20
      state, no conflicting PR, clean workspace, and Node/pnpm versions.
    2. Create the proposed independent branch/worktree from exact latest main.
    3. Add the amountIn Fixture using the fixed contract.
    4. Add the decision-engine integration test using the explicit relative glob
      and computed dynamic public imports.
    5. Update only the Fixture README.
    6. Confirm the diff contains exactly the three authorized paths.
    7. Execute zero-dist ordering, focused tests, both package test suites, public
      package smoke tests, and the full quality gate.
    8. Create one Fixture commit, push, and open one Draft PR with Closes #20.
    9. Wait for quality-gate SUCCESS on the exact current head.
    10. Update the PR Implementation Report, publish a separate Pre-PR QA handoff,
      freeze the exact head, and stop Builder work.

    13. Required clean-checkout verification

    Use Node 22.23.1 and pnpm 11.16.0. Start from an isolated checkout with
    no node_modules and no package dist directories:

    node --version
    pnpm --version
    pnpm install --frozen-lockfile
    pnpm typecheck
    pnpm build
    pnpm exec vitest run packages/decision-engine/test/amount-in-mismatch.fixture.test.ts
    pnpm exec vitest run packages/report-schema/test
    pnpm exec vitest run packages/decision-engine/test
    pnpm test:package-import
    pnpm format:check
    pnpm lint
    pnpm test
    pnpm check
    jq '{
      provenance,
      intentAmountIn: .intent.inputAmount,
      capabilityAmountIn: .capability.raw.amountIn,
      simulationAmountIn: .simulation.outcomes.items[0].raw.amountIn,
      alignment,
      decision
    }' packages/report-schema/fixtures/amount-in-mismatch.v0.1.json
    git diff --check
    git diff --name-status origin/main...HEAD
    git status --short

    Required ordering evidence:

    • no decision-engine dist exists before standalone pnpm typecheck;
    • standalone pnpm typecheck succeeds with computed dynamic package names;
    • explicit pnpm build then creates both public runtime entries in
      dependency order;
    • the focused integration test runs only after that explicit build;
    • both package-name smoke tests and both package suites pass;
    • root pnpm check remains the unchanged workflow entry.

    Boundary scans:

    rg -n '"provenance": "FIXTURE"' packages/report-schema/fixtures
    rg -n 'tokenOut|outputAsset/address' \
      packages/report-schema/fixtures/amount-in-mismatch.v0.1.json \
      packages/decision-engine/test/amount-in-mismatch.fixture.test.ts
    rg -n 'LIVE_SOURCE|privateKey|apiKey|BEGIN [A-Z ]*PRIVATE KEY|mnemonic|seed phrase|fetch\(|https?://|wss?://' \
      packages/report-schema/fixtures/amount-in-mismatch.v0.1.json \
      packages/decision-engine/test/amount-in-mismatch.fixture.test.ts
    rg -n "from\s+['\"]@moss-mini-demo|import\(['\"]@moss-mini-demo" \
      packages/decision-engine/test/amount-in-mismatch.fixture.test.ts

    The last three scans must have no matches. The test must visibly use
    join("/") and import(variable).

    Acceptance requires:

    • all commands pass under Node 22 / pnpm 11;
    • standalone zero-dist pnpm typecheck succeeds;
    • the jq projection shows the exact string values 1e18, 1e19, and 1e19;
    • complete public Schema validation and public Engine recomputation pass;
    • the actual full test count is recorded from the implementation head;
    • git diff --check passes;
    • exact diff contains only the three confirmed paths;
    • no dist, node_modules, coverage, or temporary file is tracked.

    14. Draft PR and exact-head evidence

    The Draft PR must include:

    • Closes #20;
    • this Work Plan and the later Scope Confirmation links;
    • exact base and head SHAs;
    • M1-05: Add tokenOut mismatch STOP fixture #8 squash/main and merged-main CI evidence;
    • exact three-file list;
    • fixed 1e18/1e19/1e19 integer-string values and three amount-specific
      pointers;
    • explicit proof that no tokenOut mismatch field/reference was reused;
    • public Schema validation, DecisionInput projection, and repeated public
      Engine recomputation;
    • proof that simulation SUCCESS still yields the single exact STOP reason;
    • zero-dist typecheck, focused/full tests, smoke tests, actual counts, and
      git diff --check;
    • exact-head quality-gate URL;
    • synthetic/FIXTURE and non-authorization boundaries;
    • explicit absence of M1-06: Document M1 evidence boundary and completion criteria #9/M2 work, Schema/Engine source changes, dependencies,
      Moss, Monad, RPC, UI, wallet, signing, transaction, Clear402, secrets, or
      real-chain data.

    The PR remains Draft/Open/unmerged for independent Pre-PR QA and Maintainer
    review. Builder Qy does not execute Review, Ready, Merge Gate, merge, or
    control-plane changes.

    15. Risks and rollback

    Risks requiring review:

    • copying tokenOut fields or two-reference ownership would fail to prove the
      amountIn-specific Capability/Simulation mismatch;
    • setting the selected Quote inputAmount to 10x would make the report invalid
      before the intended Alignment STOP;
    • serializing amounts as JSON numbers or using JavaScript Number would weaken
      exact minimal-unit semantics;
    • incorrect reference order or a derived /alignment pointer would violate
      the evidence contract;
    • an unintended unfavorable evidence component could add another STOP reason;
    • static public imports would break clean-checkout typecheck ordering;
    • synthetic values could be mistaken for real Monad, Moss, token, protocol, or
      simulation evidence.

    The fixed three-way amount table, Quote invariant, string assertions, exact
    references, favorable-evidence assertions, public Schema and Engine gates,
    computed dynamic imports, and README/limitation boundary address these risks.

    Rollback is one independent Fixture commit or a future squash-merge revert. It
    must not be implemented by weakening package direction, Schema, Decision
    Engine, ADR, evidence ownership, or provenance.

    16. Requested Maintainer confirmation

    Please confirm exactly:

    • planning baseline
      main@c52384448e0016d36f2e723f8cdf37f10315e1c8, with mandatory rescan if
      main advances;
    • the exact three writable paths;
    • the amount-specific raw fields and three canonical SourceReferences;
    • fixed string values 1e18 Intent and 1e19 Capability/Simulation;
    • selected Quote inputAmount remains 1e18 to preserve Schema validity;
    • no tokenOut field/reference or M1-05: Add tokenOut mismatch STOP fixture #8 scenario identity is reused;
    • the single CRITICAL_ALIGNMENT_FAIL STOP Decision;
    • public-package-only test strategy and zero-dist validation order;
    • Fixture README update, non-goals, risks, and Contributor/Maintainer
      boundaries.

    Requested next state:

    WORK_PLAN_SUBMITTED / AWAITING_MAINTAINER_SCOPE_CONFIRMATION

    Until an independent Maintainer records
    SCOPE_CONFIRMED / IMPLEMENTATION_AUTHORIZED, Builder Qy will not create or
    switch an implementation branch/worktree, edit a repository file, commit,
    push, create a PR, or begin #20 implementation.

  6. pillowtalk-Qy commented on Aug 4, 2026

    @pillowtalk-Qy
    ContributorAuthor

    SCOPE_CONFIRMED / IMPLEMENTATION_AUTHORIZED

    Reviewed closed Work Plan:
    #20 (comment)

    Authorized baseline: main@c52384448e0016d36f2e723f8cdf37f10315e1c8

    The dependency gate is satisfied: Issue #8 is Closed / Project Done, PR #67 is squash merged, and the exact merged-main push quality-gate is SUCCESS:
    https://github.com/Moss-Mini-Demo/moss-mini-demo/actions/runs/30870163331

    Confirmed scope

    Implementation is authorized for exactly these three writable paths:

    1. packages/report-schema/fixtures/amount-in-mismatch.v0.1.json
    2. packages/decision-engine/test/amount-in-mismatch.fixture.test.ts
    3. packages/report-schema/fixtures/README.md

    No fourth path is authorized. There may be no modification to the success or tokenOut Fixture, an existing test, Schema source, Decision Engine source, dependency, package metadata, lockfile, workspace, alias, TypeScript path, lifecycle script, public export, ADR, STOP presentation, root README, docs/real-vs-mock.md, workflow, protection, governance, Issue/Project state, or any #9/M2 scope.

    Fixed amountIn contract

    • Intent /intent/inputAmount: string "1000000000000000000".
    • Capability /capability/raw/amountIn: string "10000000000000000000".
    • Simulation /simulation/outcomes/items/0/raw/amountIn: string "10000000000000000000".
    • The selected successful Quote retains the Intent amount so the merged selection invariant remains valid.
    • No amount is represented as a JSON number or JavaScript Number.
    • No tokenOut mismatch field, reference, identity, or scenario contract is reused from M1-05: Add tokenOut mismatch STOP fixture #8.

    All evidence remains favorable except the one critical synthetic amountIn Alignment FAIL. Simulation remains SUCCESS and cannot suppress STOP.

    The complete Decision must contain exactly one reason:

    • code: CRITICAL_ALIGNMENT_FAIL;
    • /capability/raw/amountIn;
    • /intent/inputAmount;
    • /simulation/outcomes/items/0/raw/amountIn.

    Those references are the underlying validated source values in canonical UTF-8 order. They may not be replaced by /alignment, decision, limitations, presentation/prose/extension data, tokenOut/output-asset references, or schema-owned reference metadata.

    Required verification boundary

    The decision-engine integration test must:

    • load the Fixture through the explicit approved relative glob;
    • construct both public package names and load them through computed dynamic import(variable) calls after the explicit build;
    • pass complete public PreflightReportSchema validation;
    • remove decision and limitations, then pass public DecisionInputV0_1Schema validation;
    • repeatedly recompute the exact embedded Decision through public evaluateDecisionV0_1 without input mutation;
    • prove the three exact amount strings, favorable evidence, single reason, canonical references, synthetic FIXTURE provenance, and non-authorization boundary;
    • preserve zero-decision-engine-dist standalone typecheck ordering;
    • pass the focused test, both package suites, public package smoke tests, full pnpm check, git diff --check, exact three-file diff verification, and exact-head GitHub quality-gate under Node 22 / pnpm 11.

    Authorization boundary

    Builder Qy may create codex/issue-20-amountin-mismatch-stop-fixture from the authorized baseline and open one Draft PR with Closes #20. If main advances before branch creation, stop and rescan the new main before implementation.

    This authorizes only the closed Work Plan above. It is not QA PASS, Maintainer Review, READY_TO_MERGE, Merge Gate, or merge authorization. Any additional path, package edge, contract change, public API, or product integration requires a new Maintainer Scope Gate.

    Issue #9 remains Blocked. Issues #23, #24, and #32 remain Ready and unassigned.

  7. added a commit that references this issue on Aug 4, 2026
    9e0d5c0
  8. pillowtalk-Qy commented on Aug 4, 2026

    @pillowtalk-Qy
    ContributorAuthor

    POST_MERGE_AUDIT

    PR #68 and Issue #20 are archived as Project Done. The merge used the exact-head squash endpoint. No auto-merge or admin bypass was used, and no protection or permission setting was changed.

    This audit completes Issue #20 only. It does not open or start Issue #9.

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

Metadata

Metadata

Assignees

Labels

area:qaQuality assurance and testingpriority:P0Critical priorityrisk:trust-boundaryChanges a trust or evidence boundarytype:featureNew product functionality

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions