Skip to content

refactor: scrub replay-hash / byte-identical terminology from live docs - #22

Merged
azaharizaman merged 2 commits into
mainfrom
refactor/scrub-replay-hash-byte-identical
Aug 12, 2026
Merged

azaharizaman merged 2 commits into
mainfrom
refactor/scrub-replay-hash-byte-identical

Conversation

@azaharizaman

@azaharizaman azaharizaman commented Aug 12, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Replaces the imprecise "byte-identical output" determinism wording across the live knowledge-base docs and source/test docstrings with the precise determinism definition, and cleans up lingering references to the removed replay-hash mechanism.

  • Rephrased determinism language in AGENTS.md, CONTEXT.md, ARCHITECTURE.md, README.md, SECURITY.md, TESTING_STRATEGY.md, HOW_TO_ADD_NEW_CAPABILITY.md, HOW_TO_ADD_NEW_GRAMMAR.md.
  • Updated docstrings/comments in paxman/core/extensions.py, tests/property/test_money_properties.py; renamed test_repeated_run_is_byte_identical -> test_repeated_run_is_deterministic in tests/integration/test_pipeline.py.
  • Historical plan/spec/research/report artifacts that still mention replay_hash were relocated under docs/development/ (git renames) and left untouched per the existing "replay-hash removed; do not use as a sample" notes.

Determinism definition used

Given the same input and contract, the pipeline always yields the same canonical output — no world-knowledge, no clock, no environment-dependent ordering, no fuzzy logic, no network inference across recognition, validation, and canonicalization.

Notes

  • The intentional removal assertion assert not hasattr(vs, "replay_hash") in tests/unit/test_version_stamp.py is preserved.
  • byte-identical/replay-hash now remain only in docs/development/ historical files, docs/adr/0003-..., and capability_homogeneity_audit.md — all intentionally left as historical record.

Verification

  • uv run ruff check + ruff format --check: clean on edited files.
  • uv run pytest tests/integration/test_pipeline.py -k repeated_run_is_deterministic: 7 passed.

Summary by CodeRabbit

  • Documentation

    • Clarified that recognition, validation, and canonicalization produce deterministic results for identical inputs and configuration.
    • Documented exclusions for time, environment ordering, fuzzy logic, world knowledge, and network inference.
    • Added guidance for community extensions, development notes, and planned capabilities.
    • Clarified grammar activation, semantics keys, and behavior for unavailable grammars.
    • Added architecture reviews, research documents, and capability design specifications.
  • Tests

    • Updated determinism terminology in integration and property-test documentation while preserving existing behavior.

Rephrase the imprecise 'byte-identical output' determinism language in the live knowledge-base docs (AGENTS.md, CONTEXT.md, ARCHITECTURE.md, README.md, SECURITY.md, TESTING_STRATEGY.md, HOW_TO_ADD_NEW_CAPABILITY.md, HOW_TO_ADD_NEW_GRAMMAR.md) and in source/test docstrings (paxman/core/extensions.py, tests/integration/test_pipeline.py, tests/property/test_money_properties.py) with the precise determinism definition: no world-knowledge, no clock, no environment-dependent ordering, no fuzzy logic, no network inference across recognition, validation, and canonicalization.

Historical plan/spec/research/report artifacts that still reference the removed replay_hash mechanism are now under docs/development/ and left untouched (they already carry 'replay-hash removed; do not use as a sample' notes). The intentional removal assertion 'assert not hasattr(vs, "replay_hash")' in tests/unit/test_version_stamp.py is preserved.
@coderabbitai

coderabbitai Bot commented Aug 12, 2026 •

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@azaharizaman, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 38 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 26213464-516b-4e76-b101-2c0529c79ee3

📥 Commits

Reviewing files that changed from the base of the PR and between a99c217 and 5eda908.

📒 Files selected for processing (4)
  • AGENTS.md
  • CONTEXT.md
  • SECURITY.md
  • TESTING_STRATEGY.md
📝 Walkthrough

Walkthrough

The change revises determinism terminology, clarifies semantic grammar activation, adds development-document policy, and expands planning, architecture, research, and capability-design documentation. Runtime behavior is unchanged.

Changes

Documentation guidance

Layer / File(s) Summary
Determinism and extension guidance
AGENTS.md, ARCHITECTURE.md, CONTEXT.md, README.md, SECURITY.md, TESTING_STRATEGY.md, paxman/core/extensions.py, tests/...
Defines deterministic processing across recognition, validation, and canonicalization. Clarifies semantic grammar activation and updates related test names and descriptions.
Development-document policy and plans
docs/development/AGENTS.md, docs/development/plans/*, docs/development/report/*
Adds development-document handling rules and updates implementation plans and reports, including notices that replay-hash guidance is obsolete.
Capability research and specifications
docs/development/research/*, docs/development/specs/*
Adds or expands research and design documents for ISBN, Money, URL, SI units, and Country capabilities.

Estimated code review effort: 2 (Simple) | ~10 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main documentation terminology changes, including removal of replay-hash and byte-identical wording.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Note

Due to the large number of review comments, Critical severity comments were prioritized as inline comments.

🟠 Major comments (21)
SECURITY.md-24-24 (1)

24-24: 🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

Remove the timing-side-channel claim.

Deterministic results do not imply constant execution time or prevent timing leakage. Remove this clause unless the implementation provides a separate, verified constant-time guarantee.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@SECURITY.md` at line 24, Update the “Deterministic Computation” statement in
SECURITY.md to remove the claim that determinism prevents timing-based side
channels. Retain the supported guarantees about reproducibility, canonical
output, and excluded dependencies, without asserting constant-time behavior.
docs/development/plans/2026-08-06-url-capability.md-239-243 (1)

239-243: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Match the engine’s format_value() signature.

The centralize-output plan calls:

capability.format_value(canonical, output_format, notation)

This plan specifies a two-argument override. Implementing it as written will fail when the engine passes notation.

Proposed contract adjustment
-def format_value(value: str, output_format: str = "url") -> str:
+def format_value(
+    value: str,
+    output_format: str | None,
+    notation: URLNotation,
+) -> str:
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/plans/2026-08-06-url-capability.md` around lines 239 - 243,
Update URLCapability.format_value to match the engine’s three-argument call
contract by accepting value, output_format, and notation, while retaining URL
identity formatting and output-format validation. Ensure create_contract and the
rest of URLCapability remain unchanged.
docs/development/specs/2026-07-28-country-capability-design.md-292-318 (1)

292-318: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Make CountryContract follow the repository contract base.

The proposed class is not a CapabilityContract, uses slots=True, and omits DEFAULT_OUTPUT_FORMAT and OFFERED_OUTPUT_FORMATS. Define it as a frozen, non-slotted CapabilityContract with the standard output-format fields and active_grammars.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/specs/2026-07-28-country-capability-design.md` around lines
292 - 318, Update CountryContract to inherit from CapabilityContract and remain
frozen without slots; add the repository-standard DEFAULT_OUTPUT_FORMAT and
OFFERED_OUTPUT_FORMATS fields alongside the existing output-format
configuration, while preserving the active_grammars property and
country-specific fields.

Source: Coding guidelines

docs/development/research/2026-08-06-url-canonicalization.md-410-415 (1)

410-415: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Remove references to development documents from development documents. The repository policy forbids these dependencies.

  • docs/development/research/2026-08-06-url-canonicalization.md#L410-L415: remove the docs/development/MILESTONE.md reference.
  • docs/development/research/2026-08-09-si-unit-canonicalization.md#L555-L560: remove the docs/development/MILESTONE.md reference and correct or remove the stale docs/research/... paths.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/research/2026-08-06-url-canonicalization.md` around lines
410 - 415, Remove the docs/development/MILESTONE.md reference from the Project
references section of
docs/development/research/2026-08-06-url-canonicalization.md (lines 410-415). In
docs/development/research/2026-08-09-si-unit-canonicalization.md (lines
555-560), remove its docs/development/MILESTONE.md reference and correct or
remove the stale docs/research/... paths; no other references require changes.

Source: Coding guidelines

docs/development/specs/2026-07-28-country-capability-design.md-63-77 (1)

63-77: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Keep output formatting out of rules.

The design says rules read contract.output_format and normalize directly to alpha-3, numeric, or name. Rules must return the default alpha-2 canonical value. CountryCapability.format_value() must apply presentation formatting after validation.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/specs/2026-07-28-country-capability-design.md` around lines
63 - 77, Update the country capability design so normalization rules always
return the validated alpha-2 canonical value and do not inspect
contract.output_format. Move all alpha-3, numeric, and name conversion into
CountryCapability.format_value(), applied only after validation, while
preserving alpha-2 as the default output.

Source: Coding guidelines

docs/development/research/2026-08-05-money-canonicalization.md-631-635 (1)

631-635: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Use a valid MISSING example.

Money grammars match complete currency-plus-amount tokens. An amount-only token is not recognized, so it produces MISSING, not INVALID. Use an unknown currency or invalid amount as the recognized-but-unvalidated INVALID case.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/research/2026-08-05-money-canonicalization.md` around lines
631 - 635, Update the test summary in the canonicalization documentation to use
a valid recognized-but-unvalidated INVALID example, such as an unknown currency
or invalid amount; remove the amount-only token example, which should be
classified as MISSING.
docs/development/specs/2026-07-28-country-capability-design.md-239-284 (1)

239-284: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Gate authority features with requires_features.

SectionLocalizedNames.matches() and SectionHistoricalNames.matches() inspect contract.include_*. The engine should gate these rules through metadata. Keep matches() and normalize() independent of contract feature flags.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/specs/2026-07-28-country-capability-design.md` around lines
239 - 284, Update the metadata for SectionLocalizedNames and
SectionHistoricalNames to declare their respective include_localized and
include_historical feature requirements via requires_features. Remove contract
feature-flag checks from both matches() implementations while retaining
name-shape and lookup-table matching, and keep normalize() independent of
contract flags.

Source: Coding guidelines

docs/development/research/2026-08-05-money-canonicalization.md-735-750 (1)

735-750: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Keep bare $ opt-in.

D3 and D4 state that bare $ is unresolved when dollar_sign_currency is None. D4a later says the CLDR rule resolves $ to USD, which reintroduces the rejected default. Make resolution conditional on the contract value.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/research/2026-08-05-money-canonicalization.md` around lines
735 - 750, Update the CLDR rule’s symbol resolution described in D4a to resolve
bare `$` only when the contract’s dollar_sign_currency value is provided, using
that opt-in code instead of unconditionally mapping `$` to USD. Preserve
definitive symbol mappings and keep bare `$` INVALID when the value is None, and
make D3, D4, and D4a state this behavior consistently.
docs/development/specs/2026-07-28-country-capability-design.md-415-422 (1)

415-422: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Document the required capability test modules.

The proposed tree omits test_notation.py, test_contract.py, and test_data.py, although this capability has all three surfaces. Add the modules or state why their coverage is intentionally combined.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/specs/2026-07-28-country-capability-design.md` around lines
415 - 422, Update the “Test structure” section to include test_notation.py,
test_contract.py, and test_data.py alongside the existing capability test
modules, or explicitly state why coverage for each omitted surface is
intentionally combined into another module.

Source: Coding guidelines

docs/development/research/2026-08-05-money-canonicalization.md-458-463 (1)

458-463: 🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

Do not enforce cross-grammar precedence in the grammar layer.

The grammars run independently, and the current engine preserves cross-grammar overlaps. A grammar cannot suppress a suffix match because another grammar matched a prefix. Move D6 resolution into an existing engine/result layer, or change the contract and tests to allow both candidates.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/research/2026-08-05-money-canonicalization.md` around lines
458 - 463, The canonicalization document’s D6 rule incorrectly requires
grammar-level suppression across independent recognizers. Remove that
requirement from the grammar contract and define precedence in the existing
engine/result-resolution layer, or revise the documented behavior and tests to
allow both prefix and suffix candidates; preserve the stated single-currency
output only if resolution is moved outside the grammars.
docs/development/specs/2026-07-28-country-capability-design.md-149-167 (1)

149-167: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Do not recognize every non-empty string as a country name.

This makes ordinary prose a recognition and changes unknown input from MISSING to INVALID. The same document rejects unrestricted recognition for this reason. Use normalized known-name key sets, then preserve the input in CountryNotation; let rules assign meaning.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/specs/2026-07-28-country-capability-design.md` around lines
149 - 167, Update the name_recognition grammar specification and implementation
guidance to recognize only inputs present in normalized known-country-name key
sets, rather than every non-empty string. Preserve the original input in
CountryNotation.value, return no match for empty or unknown names, and leave
semantic interpretation to the rules.
docs/development/specs/2026-07-28-country-capability-design.md-44-48 (1)

44-48: 🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

Separate standards provenance from Paxman successor-selection policy. ISO 3166-3 should support historical identifiers; product fallback mappings require Paxman policy provenance.

  • docs/development/specs/2026-07-28-country-capability-design.md#L44-L48: distinguish ISO historical data from policy-selected current successors.
  • docs/development/specs/2026-08-03-f3-recognition-validation-boundary-design.md#L42-L53: preserve the same provenance split in the approved F3 design.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/specs/2026-07-28-country-capability-design.md` around lines
44 - 48, Update the recognition and fallback specifications to separate ISO
3166-3 historical identifiers from Paxman policy-selected current successors. In
docs/development/specs/2026-07-28-country-capability-design.md lines 44-48,
document ISO historical-data provenance separately from successor-selection
policy; apply the same provenance distinction in
docs/development/specs/2026-08-03-f3-recognition-validation-boundary-design.md
lines 42-53. Preserve the existing recognition categories while clarifying that
product fallback mappings require Paxman policy provenance.

Source: Learnings

docs/development/research/2026-08-05-isbn-canonicalization.md-454-462 (1)

454-462: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Correct the disabled range-validation status.

When include_range_validation=False, the range rule is not run. A check-digit-valid ISBN in an unallocated range must still produce SUCCESS, as stated in Lines 460-462. INVALID applies only when range validation is enabled and rejects the range.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/research/2026-08-05-isbn-canonicalization.md` around lines
454 - 462, Update the documented disabled behavior for include_range_validation
so a check-digit-valid ISBN in an unallocated range produces SUCCESS when the
feature is false; reserve INVALID for cases where range validation is enabled
and rejects the range, keeping the requires_features explanation consistent.
docs/development/research/2026-08-05-isbn-canonicalization.md-300-317 (1)

300-317: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Remove replay-hash requirements from this design.

The architecture summary still claims a SHA-256 replay hash. The property-test plan also requires replay-hash differences. The current repository contract removes this artifact. Replace these statements with snapshot-scoped deterministic canonical values and candidate/provenance assertions.

Also applies to: 523-534
[skip_comment]

⛔ Skipped due to learnings
Learnt from: azaharizaman
Repo: azaharizaman/paxman-python PR: 2
File: docs/superpowers/plans/2026-07-28-country-capability-implementation.md:13-40
Timestamp: 2026-07-28T09:50:44.364Z
Learning: In this repository, files under `docs/superpowers/plans/` are prospective implementation plans, not retrospective documentation. During reviews, the implemented package layout takes precedence; do not flag a plan merely because it differs from the final implementation unless the plan itself is expected to be executed or maintained as current guidance.
Learnt from: CR
Repo: azaharizaman/paxman-python PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-08-11T15:28:43.911Z
Learning: Applies to paxman/capabilities/**/grammar/**/*.py : Grammars may only recognize input and return span-bearing `RecognitionMatch` values; they must not validate, deduplicate, order, map tokens to canonical values, or import rule-layer data.
Learnt from: CR
Repo: azaharizaman/paxman-python PR: 0
File: paxman/capabilities/AGENTS.md:0-0
Timestamp: 2026-08-11T15:28:56.148Z
Learning: Applies to paxman/capabilities/*/grammar/**/*.py : Grammars must be syntax-only recognizers: they may extract and sanitize span-bearing `RecognitionMatch` values, but must not validate, deduplicate, order, or map tokens to canonical values.
Learnt from: CR
Repo: azaharizaman/paxman-python PR: 0
File: paxman/core/AGENTS.md:0-0
Timestamp: 2026-08-11T15:29:07.957Z
Learning: Applies to paxman/core/domain.py : `Grammar` subclasses must declare `name`, and `recognize()` must return only span-bearing `RecognitionMatch` objects, never bare notation.
Learnt from: CR
Repo: azaharizaman/paxman-python PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-08-11T15:28:43.911Z
Learning: Applies to paxman/capabilities/**/*.py : Follow the per-capability layout: `notation.py`, `contract.py`, `capability.py`, `grammar/`, and `rules/`.
Learnt from: CR
Repo: azaharizaman/paxman-python PR: 0
File: paxman/core/AGENTS.md:0-0
Timestamp: 2026-08-11T15:29:07.957Z
Learning: Applies to paxman/core/**/*.py : Do not raise from `Rule.matches()` or `normalize()` internals; the engine must surface rule and grammar failures as `RecognitionError` or `ValidationError`, not ad-hoc exceptions.
Learnt from: CR
Repo: azaharizaman/paxman-python PR: 0
File: paxman/core/AGENTS.md:0-0
Timestamp: 2026-08-11T15:29:07.957Z
Learning: Applies to paxman/core/domain.py : Define pipeline value objects with `dataclass(frozen=True, slots=True)`. Enforce half-open spans and `len(raw_text) == end - start` in `__post_init__`; lowercase `GrammarRule` names; safe hashing for unhashable `RecognizedRep` notations; and tuple-ize `Candidate._provenance` from its `init=False` field.
Learnt from: CR
Repo: azaharizaman/paxman-python PR: 0
File: paxman/capabilities/AGENTS.md:0-0
Timestamp: 2026-08-11T15:28:56.148Z
Learning: Applies to paxman/capabilities/*/capability.py : Capabilities must wire grammars through `get_grammars()`, rules through `get_rules()`, contracts through static `create_contract()`, and expose `format_value()` as the only presentation seam.
Learnt from: CR
Repo: azaharizaman/paxman-python PR: 0
File: paxman/capabilities/AGENTS.md:0-0
Timestamp: 2026-08-11T15:28:56.148Z
Learning: Applies to paxman/capabilities/*/{contract.py,capability.py,grammar/**/*.py,rules/**/*.py} : Input-shape features must gate grammars through `active_grammars`, while authority features must gate rules through `requires_features`; never gate inside `matches()` or by reading `include_*` flags directly.
Learnt from: CR
Repo: azaharizaman/paxman-python PR: 0
File: paxman/capabilities/AGENTS.md:0-0
Timestamp: 2026-08-11T15:28:56.148Z
Learning: Applies to paxman/capabilities/*/grammar/*.py : Use one grammar file per recognizer, with a unique snake_case name in the form `{format}_recognition`.
Learnt from: CR
Repo: azaharizaman/paxman-python PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-08-11T15:28:43.911Z
Learning: Applies to paxman/engine/orchestrator.py : `run_capability()` must preserve the full recognize → validate → resolve → hash pipeline.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/research/2026-08-05-isbn-canonicalization.md` around lines
300 - 317, Remove replay-hash claims from the architecture summary and the
property-test plan sections around the referenced design statements. Replace
them with snapshot-scoped deterministic canonical-value expectations and
assertions covering candidate values and provenance, while preserving the
existing recognition, validation, and status behavior.
docs/development/research/2026-08-05-money-canonicalization.md-598-605 (1)

598-605: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Remove replay-hash serialization from the contract design.

_extra_dict_fields() is described as making a replay hash reflect precision and dollar_sign_currency. The current determinism contract no longer exposes a replay hash. Test these fields through canonical values and provenance instead.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/research/2026-08-05-money-canonicalization.md` around lines
598 - 605, Update the contract design to remove the replay-hash rationale for
`_extra_dict_fields()` and stop describing serialization of `precision` and
`dollar_sign_currency`. Specify that these fields are validated through
canonical values and provenance instead, while preserving the existing
parameter, output-format, and presentational-only behavior.
docs/development/research/2026-08-06-url-canonicalization.md-14-18 (1)

14-18: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Use the snapshot-scoped determinism definition.

The document still defines canonicalization as “byte-identical” and keeps replay-hash wording in the test plan. Use the repository definition: identical inputs and contracts produce the same canonical output within a fixed snapshot. Test candidate values and provenance authorities instead.

Also applies to: 34-40, 326-334, 389-391

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/research/2026-08-06-url-canonicalization.md` around lines 14
- 18, Update the document’s determinism definition to require identical
canonical output only for identical inputs and contracts within a fixed
snapshot, rather than unconditional “byte-identical” output. Remove replay-hash
wording from the test plan and revise the affected sections to test candidate
values and provenance authorities instead, preserving the WHATWG pipeline and
RFC/UTS `#46` source references.
docs/development/research/2026-08-09-si-unit-canonicalization.md-203-203 (1)

203-203: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Define one u policy for all layers.

Line 203 accepts u as an alias for Da, but lines 267–270 reject bare u and accept only the name form. Specify whether grammar data recognizes u, whether rule data maps it to Da, and whether tests expect Da or INVALID.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/research/2026-08-09-si-unit-canonicalization.md` at line
203, Define a single consistent policy for the `u` symbol across the grammar,
rule data, and tests: recognize bare `u` in grammar data, map it to canonical
`Da` in the rules, and update tests to expect `Da` rather than `INVALID`; keep
the name-form alias behavior aligned with this policy.
docs/development/research/2026-08-09-si-unit-canonicalization.md-14-21 (1)

14-21: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Remove replay-hash and byte-identical-output requirements.

The document still lists replay-hash literals and a replay-hash baseline. The current PR removes that mechanism and defines determinism as stable canonical output within a fixed snapshot. Replace the baseline with candidate-value and provenance-authority assertions.

Also applies to: 431-459

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/research/2026-08-09-si-unit-canonicalization.md` around
lines 14 - 21, Update the research document’s determinism and validation
guidance to remove replay-hash literals, replay-hash baselines, and
byte-identical-output requirements. Define determinism as stable canonical
output within a fixed data snapshot, and replace the removed baseline with
assertions covering candidate values and provenance authority. Apply the same
cleanup to the additional section referenced in the comment.
docs/development/research/2026-08-05-money-canonicalization.md-518-525 (1)

518-525: 🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

Separate minor-unit data from routed validation rules.

SectionMinorUnits targets all grammars but only supplies CcyMnrUnts. The engine requires every routed rule to implement matches() and normalize() and to emit a candidate. Store MINOR_UNITS in rule data or a shared helper, and let each representation rule use it.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/research/2026-08-05-money-canonicalization.md` around lines
518 - 525, Separate SectionMinorUnits from the routed validation rules: remove
it as a grammar-targeted rule and store its authoritative CcyMnrUnts data in
rule data or a shared helper. Ensure each code, symbol, and word representation
rule independently implements matches(), normalize(), and candidate emission
while reusing MINOR_UNITS for amount normalization and quantization.
docs/development/research/2026-08-06-url-canonicalization.md-296-307 (1)

296-307: 🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

Align fatal URL handling with the engine status contract.

  • Treat a recognized fatal span as Resolution.INVALID, not MISSING.
  • Define an explicit recovery-metadata channel. Provenance currently stores authority citations only and has no recovery-event field.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/research/2026-08-06-url-canonicalization.md` around lines
296 - 307, Update the WHATWG URL Standard rule’s fatal-validation path to return
Resolution.INVALID for recognized fatal spans, while preserving no-resolution
behavior for unrecognized input. Extend Provenance with an explicit
recovery-events field and populate it for silent parser recoveries, without
conflating recovery metadata with authority citations.
docs/development/research/2026-08-09-si-unit-canonicalization.md-60-72 (1)

60-72: 🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

Separate the 2022 prefix data from the 2019 provenance.

year filters complete rules by publication_year <= contract.year. The proposed 2019-stamped rule includes quetta, ronna, ronto, and quecto, so year=2019 would accept post-2019 symbols. Use separate 2022 provenance for these prefixes, or state that year is not a historical snapshot mechanism. Add tests for year=2019 and year=2022.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/research/2026-08-09-si-unit-canonicalization.md` around
lines 60 - 72, Separate the quetta, ronna, ronto, and quecto prefix rules from
the 2019 BIPM provenance by assigning them 2022 publication provenance, while
retaining the 2019 provenance for the original SI rules. Ensure year-based
filtering excludes these prefixes for year=2019 and includes them for year=2022,
and add coverage for both cases.
🟡 Minor comments (14)
AGENTS.md-65-65 (1)

65-65: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Use one fixed-snapshot determinism definition across the documentation. The current wording in these files can imply stability across library, registry, or rule-data changes, while ARCHITECTURE.md correctly scopes the guarantee to a fixed snapshot.

  • AGENTS.md#L65-L65: add the fixed library-snapshot qualifier.
  • CONTEXT.md#L9-L11: require the same input, contract, and library snapshot.
  • SECURITY.md#L24-L24: add the same scope to the security-policy statement.
  • TESTING_STRATEGY.md#L3-L3: define test determinism within a fixed library snapshot.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@AGENTS.md` at line 65, Use one fixed-library-snapshot determinism definition
across all four documentation sites: update AGENTS.md lines 65-65, CONTEXT.md
lines 9-11, SECURITY.md lines 24-24, and TESTING_STRATEGY.md lines 3-3 to scope
deterministic behavior to the same input, contract, and library snapshot,
matching ARCHITECTURE.md.
docs/development/plans/2026-07-26-contract-params-hypothesis-tests.md-17-17 (1)

17-17: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Add language identifiers to the development-document fences.

The affected files contain repeated MD040 violations. Add the correct language identifier to every opening fence.

  • docs/development/plans/2026-07-26-contract-params-hypothesis-tests.md#L17-L17: mark the fences at Lines 17 and 48.
  • docs/development/plans/2026-08-02-capability-surface-homogeneity.md#L205-L205: mark the fence at Line 205.
  • docs/development/plans/2026-08-10-adr0002-remove-replay-hash.md#L114-L114: mark the fences at Lines 114, 150, 169, 214, 247, 288, 327, 360, 392, 420, 455, and 497.
  • docs/development/plans/2026-08-11-adr0003-semantic-affinity-routing.md#L237-L237: mark the fences at Lines 237, 334, 399, 448, 510, 548, 585, 618, and 667.
  • docs/development/report/architecture-review-2026-07-26.md#L176-L176: mark the fences at Lines 176, 185, 194, and 206.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/plans/2026-07-26-contract-params-hypothesis-tests.md` at
line 17, Add the appropriate language identifier to every opening Markdown code
fence at the specified sites:
docs/development/plans/2026-07-26-contract-params-hypothesis-tests.md lines 17
and 48; docs/development/plans/2026-08-02-capability-surface-homogeneity.md line
205; docs/development/plans/2026-08-10-adr0002-remove-replay-hash.md lines 114,
150, 169, 214, 247, 288, 327, 360, 392, 420, 455, and 497;
docs/development/plans/2026-08-11-adr0003-semantic-affinity-routing.md lines
237, 334, 399, 448, 510, 548, 585, 618, and 667; and
docs/development/report/architecture-review-2026-07-26.md lines 176, 185, 194,
and 206. Choose each identifier based on the fenced content.

Source: Linters/SAST tools

docs/development/plans/2026-07-26-contract-params-hypothesis-tests.md-15-30 (1)

15-30: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Add the missing Date contract file to the inventory.

Lines 18-30 omit paxman/capabilities/Date/contract.py, but Line 684 imports DateContract from that module and Lines 736-771 define it. Add the module to the Files to Create tree. A worker that follows the inventory can miss this required file.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/plans/2026-07-26-contract-params-hypothesis-tests.md` around
lines 15 - 30, Add paxman/capabilities/Date/contract.py to the Files to Create
inventory, noting that it contains DateContract. Keep the existing capability.py
entry and other file descriptions unchanged.
docs/development/plans/2026-08-11-adr0003-semantic-affinity-routing.md-3-5 (1)

3-5: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Mark the plan as complete.

Line 5 says Tasks 3-10 are pending, but Lines 22-35 state that all ten tasks landed. Update the status and execution preamble to the completed state. The current contradiction can cause a worker to rerun completed tasks.

Also applies to: 22-35

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/plans/2026-08-11-adr0003-semantic-affinity-routing.md`
around lines 3 - 5, Update the plan metadata and execution preamble in the
ADR0003 document to mark the work complete, replacing the pending Tasks 3-10
status with the completed state consistent with the task summaries in the
execution section. Ensure no text suggests completed tasks should be rerun.
docs/development/plans/2026-08-02-capability-surface-homogeneity.md-203-210 (1)

203-210: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Run import-linter through uv.

Line 210 is the only command in this verification block without uv run. Change it to uv run import-linter lint so the check uses the same project environment as the other commands.

Proposed fix
-import-linter lint              # boundaries intact
+uv run import-linter lint       # boundaries intact
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/plans/2026-08-02-capability-surface-homogeneity.md` around
lines 203 - 210, Update the “Verification gates” command block so the
import-linter check runs as “uv run import-linter lint,” matching the project
environment used by the other verification commands.
docs/development/plans/2026-08-03-f2-include-feature-gating.md-80-87 (1)

80-87: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Add blank lines around both Markdown tables.

markdownlint-cli2 reports MD058 at Line 81 and Line 87. Add one blank line before and after each table so the plan passes its documented lint gate.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/plans/2026-08-03-f2-include-feature-gating.md` around lines
80 - 87, Add blank lines immediately before and after both Markdown tables in
the plan, including the tables under “Authority features” and “Input-shape
features,” while leaving their content unchanged so markdownlint MD058 passes.

Source: Linters/SAST tools

docs/development/plans/2026-08-04-recognition-homogeneity.md-642-643 (1)

642-643: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Remove the blank line between adjacent blockquotes.

markdownlint-cli2 reports MD028 at Line 643. Remove the blank line or prefix it with > so the post-hoc correction remains part of the same blockquote.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/plans/2026-08-04-recognition-homogeneity.md` around lines
642 - 643, Remove the blank line between the adjacent blockquote lines in the
recognition homogeneity plan, or prefix that line with “>”, so the replay-hash
correction remains part of one continuous blockquote and satisfies markdownlint
MD028.

Source: Linters/SAST tools

docs/development/plans/2026-08-04-recognition-homogeneity.md-108-108 (1)

108-108: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Keep removal warnings outside fenced Python examples. The inserted blockquotes render as code when placed inside the examples, so they are not visible warnings and can corrupt copied snippets.

  • docs/development/plans/2026-08-04-recognition-homogeneity.md#L108-L108: move the warning outside the baseline Python example.
  • docs/development/plans/2026-08-05-isbn-capability.md#L1170-L1170: move the warning outside the property-test Python example.
  • docs/development/plans/2026-08-05-money-capability.md#L4763-L4763: move the warnings at Lines 4763, 4809, and 4846 outside the property-test Python example.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/plans/2026-08-04-recognition-homogeneity.md` at line 108,
Move the replay-hash removal warning at
docs/development/plans/2026-08-04-recognition-homogeneity.md:108-108 outside the
surrounding fenced Python example. Apply the same placement fix to the warning
at docs/development/plans/2026-08-05-isbn-capability.md:1170-1170 and the
warnings at docs/development/plans/2026-08-05-money-capability.md:4763-4763,
4809, and 4846, keeping each warning rendered as Markdown rather than Python
code.
docs/development/plans/2026-08-06-url-capability.md-292-304 (1)

292-304: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Mark the replay-hash task as historical or rewrite it.

Task 10 is still presented as executable guidance and instructs implementers to add replay_hash baseline assertions. The PR context states that replay-hash was removed. Following this task will target a removed API.

Add the removal warning used by the other development plans, or replace the task with the current determinism checks before treating this plan as executable.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/plans/2026-08-06-url-capability.md` around lines 292 - 304,
Update Task 10 in the development plan to stop presenting replay_hash baseline
assertions as executable work now that the API is removed. Mark the task
historical using the removal warning pattern used by other plans, or replace its
steps with the current URL determinism checks; remove guidance that targets
register_capability replay-hash tests and baseline literals.
docs/development/plans/2026-08-03-f3-recognition-validation-boundary.md-400-400 (1)

400-400: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Update the replay-hash document path.

The warnings reference docs/adr/0002-remove-replay-hash.md, but the supplied stack context relocates this artifact to docs/development/plans/2026-08-10-adr0002-remove-replay-hash.md. Update all three references, or verify that the old path still exists.

Also applies to: 441-441, 478-478
[skip_comment]

⛔ Skipped due to learnings
Learnt from: CR
Repo: azaharizaman/paxman-python PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-08-11T15:28:43.911Z
Learning: Applies to paxman/**/*.py : Never guess, infer, or suggest; identical input and contract must produce byte-identical output.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/plans/2026-08-03-f3-recognition-validation-boundary.md` at
line 400, Update all three replay-hash warning references in this document to
the relocated artifact path
docs/development/plans/2026-08-10-adr0002-remove-replay-hash.md, or confirm and
retain the old path only if that file still exists.
docs/development/plans/2026-08-04-centralize-output-format.md-9-9 (1)

9-9: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Update the replay-hash document path in every warning.

These warnings point to docs/adr/0002-remove-replay-hash.md. The supplied stack context lists the relocated artifact at docs/development/plans/2026-08-10-adr0002-remove-replay-hash.md. Use the current path consistently.

Also applies to: 30-30, 46-46, 56-56, 60-60, 64-64, 75-75, 102-102, 148-148, 306-306, 326-326, 360-360, 414-414, 418-418
[skip_comment]

⛔ Skipped due to learnings
Learnt from: azaharizaman
Repo: azaharizaman/paxman-python PR: 2
File: docs/superpowers/plans/2026-07-28-country-capability-implementation.md:13-40
Timestamp: 2026-07-28T09:50:44.364Z
Learning: In this repository, files under `docs/superpowers/plans/` are prospective implementation plans, not retrospective documentation. During reviews, the implemented package layout takes precedence; do not flag a plan merely because it differs from the final implementation unless the plan itself is expected to be executed or maintained as current guidance.
Learnt from: CR
Repo: azaharizaman/paxman-python PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-08-11T15:28:43.911Z
Learning: Applies to paxman/**/*.py : Never guess, infer, or suggest; identical input and contract must produce byte-identical output.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/plans/2026-08-04-centralize-output-format.md` at line 9,
Update every warning referencing the replay-hash ADR in this document to use the
relocated path docs/development/plans/2026-08-10-adr0002-remove-replay-hash.md,
including all occurrences of the replay_hash removal warning, while leaving the
warning content otherwise unchanged.
docs/development/plans/2026-08-04-recognition-homogeneity.md-14-14 (1)

14-14: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Update the replay-hash document path in every warning.

These warnings reference docs/adr/0002-remove-replay-hash.md. The relocated document listed in the stack context is docs/development/plans/2026-08-10-adr0002-remove-replay-hash.md.

Also applies to: 34-34, 68-68, 89-89, 95-95, 99-99, 103-103, 108-108, 116-116, 177-177, 185-185, 194-194, 642-642, 1209-1209, 1556-1556, 1560-1560, 1564-1564, 1580-1580

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/plans/2026-08-04-recognition-homogeneity.md` at line 14,
Update every warning in the recognition homogeneity plan that references
docs/adr/0002-remove-replay-hash.md to use
docs/development/plans/2026-08-10-adr0002-remove-replay-hash.md instead,
including all listed occurrences.
docs/development/plans/2026-08-05-isbn-capability.md-22-22 (1)

22-22: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Update the replay-hash document path in every warning.

These warnings reference docs/adr/0002-remove-replay-hash.md. The supplied stack context lists the relocated document at docs/development/plans/2026-08-10-adr0002-remove-replay-hash.md.

Also applies to: 62-62, 171-171, 1170-1170, 1183-1183, 1188-1188, 1192-1192, 1214-1214, 1220-1220, 1228-1228, 1232-1232, 1236-1236
[skip_comment]

⛔ Skipped due to learnings
Learnt from: CR
Repo: azaharizaman/paxman-python PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-08-11T15:28:43.911Z
Learning: Applies to paxman/capabilities/ISBN/rules/data/range_message.py : Regenerate ISBN range data only through `tools/regenerate_isbn_range_data.py` from the XML snapshot.
Learnt from: CR
Repo: azaharizaman/paxman-python PR: 0
File: paxman/capabilities/AGENTS.md:0-0
Timestamp: 2026-08-11T15:28:56.148Z
Learning: Applies to paxman/capabilities/**/rules/data/**/*.{py,json,csv} : Generated data may be edited only through its source snapshot and generator; currently ISBN range data must be regenerated with `tools/regenerate_isbn_range_data.py`. Unmarked data files may be edited directly.
Learnt from: CR
Repo: azaharizaman/paxman-python PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-08-11T15:28:43.911Z
Learning: Applies to paxman/**/*.py : Never guess, infer, or suggest; identical input and contract must produce byte-identical output.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/plans/2026-08-05-isbn-capability.md` at line 22, Update
every warning in this document that references
docs/adr/0002-remove-replay-hash.md, including the listed occurrences, to use
docs/development/plans/2026-08-10-adr0002-remove-replay-hash.md instead; leave
the warning text and surrounding content unchanged.
docs/development/plans/2026-08-05-money-capability.md-7-7 (1)

7-7: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Update the replay-hash document path in every warning.

These warnings reference docs/adr/0002-remove-replay-hash.md. The supplied stack context lists the relocated document at docs/development/plans/2026-08-10-adr0002-remove-replay-hash.md.

Also applies to: 545-545, 4714-4714, 4763-4763, 4809-4809, 4846-4846, 4898-4898, 4903-4903, 4907-4907, 4913-4913, 4953-4953, 4957-4957, 4973-4973, 4985-4985, 4996-4996, 5092-5092
[skip_comment]

⛔ Skipped due to learnings
Learnt from: CR
Repo: azaharizaman/paxman-python PR: 0
File: tests/AGENTS.md:0-0
Timestamp: 2026-08-11T15:29:18.173Z
Learning: Applies to tests/property/test_money_properties.py : `test_money_properties.py` is the sole documented exception to the property-test registry restriction and may test full-pipeline invariants using a local `_fresh_registry` fixture documented in the module.
Learnt from: azaharizaman
Repo: azaharizaman/paxman-python PR: 2
File: docs/superpowers/plans/2026-07-28-country-capability-implementation.md:13-40
Timestamp: 2026-07-28T09:50:44.364Z
Learning: In this repository, files under `docs/superpowers/plans/` are prospective implementation plans, not retrospective documentation. During reviews, the implemented package layout takes precedence; do not flag a plan merely because it differs from the final implementation unless the plan itself is expected to be executed or maintained as current guidance.
Learnt from: CR
Repo: azaharizaman/paxman-python PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-08-11T15:28:43.911Z
Learning: Applies to paxman/**/*.py : Never guess, infer, or suggest; identical input and contract must produce byte-identical output.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/plans/2026-08-05-money-capability.md` at line 7, Update
every warning in the document that references
docs/adr/0002-remove-replay-hash.md to use
docs/development/plans/2026-08-10-adr0002-remove-replay-hash.md instead,
including all occurrences listed in the review. Preserve the surrounding warning
text and formatting.
🧹 Nitpick comments (1)
docs/development/plans/2026-08-06-url-capability.md (1)

21-26: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Omit active_grammars for this non-feature-gated capability.

The supplied capability contract guidance says to use active_grammars only when recognition is feature-gated. The URL plan declares no feature flags, but hard-codes ("absolute_uri_recognition",). Omit the property and let the engine run get_grammars() so future grammars are not silently excluded.

Also applies to: 198-205, 211-219

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/development/plans/2026-08-06-url-capability.md` around lines 21 - 26,
Remove the hard-coded active_grammars declaration from URLCapabilityContract and
the corresponding URL plan sections. Keep the capability ungated with no feature
flags, allowing the engine to derive grammars through get_grammars() so future
URL grammars are included automatically.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 705bf6db-f69c-442b-b1a8-13f298e46fab

📥 Commits

Reviewing files that changed from the base of the PR and between 204912a and a99c217.

📒 Files selected for processing (38)
  • AGENTS.md
  • ARCHITECTURE.md
  • CONTEXT.md
  • HOW_TO_ADD_NEW_CAPABILITY.md
  • HOW_TO_ADD_NEW_GRAMMAR.md
  • README.md
  • SECURITY.md
  • TESTING_STRATEGY.md
  • docs/development/AGENTS.md
  • docs/development/plans/2026-07-26-contract-params-hypothesis-tests-revised.md
  • docs/development/plans/2026-07-26-contract-params-hypothesis-tests.md
  • docs/development/plans/2026-07-26-email-capability.md
  • docs/development/plans/2026-07-28-country-capability-implementation.md
  • docs/development/plans/2026-08-01-phone-number-capability.md
  • docs/development/plans/2026-08-02-capability-surface-homogeneity.md
  • docs/development/plans/2026-08-03-f1-grammar-rule-affinity.md
  • docs/development/plans/2026-08-03-f2-include-feature-gating.md
  • docs/development/plans/2026-08-03-f3-recognition-validation-boundary.md
  • docs/development/plans/2026-08-04-centralize-output-format.md
  • docs/development/plans/2026-08-04-recognition-homogeneity.md
  • docs/development/plans/2026-08-05-isbn-capability.md
  • docs/development/plans/2026-08-05-money-capability.md
  • docs/development/plans/2026-08-06-url-capability.md
  • docs/development/plans/2026-08-08-currency-capability.md
  • docs/development/plans/2026-08-09-si-units-capability.md
  • docs/development/plans/2026-08-10-adr0002-remove-replay-hash.md
  • docs/development/plans/2026-08-11-adr0003-semantic-affinity-routing.md
  • docs/development/report/architecture-review-2026-07-26.md
  • docs/development/report/recognition-handling-library-research.md
  • docs/development/research/2026-08-05-isbn-canonicalization.md
  • docs/development/research/2026-08-05-money-canonicalization.md
  • docs/development/research/2026-08-06-url-canonicalization.md
  • docs/development/research/2026-08-09-si-unit-canonicalization.md
  • docs/development/specs/2026-07-28-country-capability-design.md
  • docs/development/specs/2026-08-03-f3-recognition-validation-boundary-design.md
  • paxman/core/extensions.py
  • tests/integration/test_pipeline.py
  • tests/property/test_money_properties.py

@azaharizaman
azaharizaman merged commit 98c8642 into main Aug 12, 2026
1 of 5 checks passed
@azaharizaman
azaharizaman deleted the refactor/scrub-replay-hash-byte-identical branch August 12, 2026 18:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant