Skip to content

feat: generate unverified financial report and XBRL proposals - #50

Draft
seonghobae wants to merge 82 commits into
developfrom
feat/financial-reporting-xbrl-export
Draft

seonghobae wants to merge 82 commits into
developfrom
feat/financial-reporting-xbrl-export

Conversation

@seonghobae

@seonghobae seonghobae commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Problem

The ledger already produces a repeatable-read package containing the income statement, statement of financial position, changes in equity, and cash flow. Buyers also need profit-or-loss headlines, structured report explanations, and XBRL export without allowing a renderer, validator, taxonomy adapter, URI identifier, or model to become another accounting authority.

Implemented bounded delta

  • exact-Decimal current and comparative profit-or-loss summary;
  • canonical fact records for all four statements, including statement type, period type, context, and supplied source paths;
  • arithmetic controls for statement totals, profit or loss, financial position, equity rollforward, cash flow, and cross-statement ties;
  • deterministic structured explanations with codes, directions, exact parameters, and supplied evidence paths;
  • versioned XbrlTaxonomyProfile and XbrlConceptMapping value objects;
  • deterministic XBRL 2.1 proposal serialization with duration/instant contexts, ISO 4217 unit, schema reference, facts, and SHA-256 identity;
  • complete proposal reconstruction before export so derived facts cannot be changed merely by recomputing an outer hash;
  • fail-closed public value-object validation for binary floating point, XML-unsafe text, torn snapshot claims, JSON type aliases, PostgreSQL numeric(38, 6) overflow/rounding, malformed URI percent escapes/raw backslashes, non-numeric HTTP(S) authority ports, hostless HTTP(S) authorities, HTTP(S) userinfo, and malformed structural URN assigned names;
  • ADR 0067, product/technical/data-model documents, XBRL standards traceability, and a dedicated test matrix.

Authority boundary

The pure builder is deliberately non-authoritative. Its outputs remain:

truth_status_code = proposed
source_authority_code = caller_supplied_statement_package
publication_readiness_code = unverified
authoritative_report = false
report_artifact_reference = urn:cwl:accounting:financial_report_proposal:{sha256}

XBRL proposal output remains:

xbrl_validation_status_code = not_run
filing_readiness_code = not_ready
authoritative_report = false

A content digest or syntactically valid URI proves neither AIS origin nor taxonomy trust. Only a successor owner command may issue authoritative report identity after loading the four statements, reporting currency, fiscal dates, journal/close-snapshot population, close/live state, and knowledge cutoff from AIS-owned PostgreSQL in one controlled snapshot, retaining provenance, running independent validation, obtaining maker-checker approval, and publishing append-only receipts. Issue #51 owns that buyer-visible round trip.

Current exact state — 2026-09-09

  • exact head: e4bc1b417866737e09d7b08a35f6b007953d5bad;
  • live protected base: develop@239008c4edc7d305c97704c5102b593c6622b36f;
  • state: open / Draft / mergeable / not merge-ready;
  • Accounting Foundation run 34148534940 is terminal GREEN on this exact head. Accounting job 101825730784 passed behavior/repository tests, complete production branch coverage, explicit denominator enforcement, repository contracts, compile/import, reproducible wheel and package evidence. Retained exact-head coverage is 5,521/5,521 production statements and 2,006/2,006 branches. Same-run exact dependency diff, security, and SAST evidence are GREEN;
  • exact-head package artifact 10028619234 digest: sha256:70f044a2e63d55aa8586ccb13a4dca01a5421c3a0812d828f3d2ad9c87fbd097; wheel SHA-256: 944b5ff32866345f42adec194a93fe44d36b46c14809862c6af46641202f3b86; SBOM SHA-256: e1b04986dd84a42f84fccfff4d51becb54cbd675b36b4143829793acbc380b1e; source-provenance SHA-256: 4226b02659b15dbebb913c118f7876fc76989c3dddd96b328dc0177caf087aad, bound to source e4bc1b4... and .github/workflows/ci.yml;
  • standalone Security 34148535028 and SAST 34148534930 are terminal GREEN on exact e4bc1b4...;
  • required CodeQL run 34148534976 remains historical non-passing evidence. Its receiver/coordinator state predates later central workflow generations and is retained diagnostically only; rerunning that historical definition does not prove the current protected producer;
  • protected central workflow authority is .github/main@7fd571dbcdbae6acf29d8f4ee704d7ba6297e4db after ordinary integration of #2028;
  • current canonical central repair is .github#2040@6706c231ab06a3c91c43fdb5b989cfcd79fff593, Ready/mergeable on protected main@7fd571.... Required CodeQL run 34251822255 is terminal FAILURE, so exact e4bc1b4... still lacks authenticated current-generation CodeQL admission;
  • fresh independent consumer canary Orgmetra#65@b7f2b730b8b231aa28e485c655fd8cdf18007d46, required run 34289116329, demonstrates a stronger central ordering defect: Actions receiver 102271601195 terminal-failed at 23:14:02Z and Python receiver 102271601217 at 23:14:03Z, while authoritative dispatch 102273249299 did not start until 23:17:33Z and completed SUCCESS at 23:17:39Z. Receiver enforcement can therefore fail before same-run producer/dispatch evidence can settle;
  • accepted central repair must order receiver/current-head enforcement after terminal authenticated dispatch/publication, or provide an equivalent exact-run evidence-settlement barrier, while preserving exact repository/PR/base/head/language/required-run/SARIF identity. A coordinator reread may be part of the implementation but is insufficient if the receiver has already terminal-failed. Sleep-only timing fixes, broad unrelated-run polling, historical AIP reruns, predecessor verdict transfer, leaf PAT/status workaround, synthetic success, no-op push, or actor/sender weakening are prohibited;
  • CodeRabbit has independently re-reviewed exact e4bc1b4... and reported no findings for the userinfo repair, prior URI guards, and bounded URI consumers. This is review evidence, not a qualifying formal APPROVED decision. No qualifying independent current-head APPROVED review is present.

Repair lineage

The URI boundary has been repaired by small TDD increments without adding URL dereferencing, taxonomy loading, network authority, or accounting authority.

  1. RED 00ac8baa79cdaa33fdf319e37d5aaad325fb8570 proved a non-numeric HTTP(S) port was accepted. Scope correction fc3889bc2f3c76f09a1b4e58a2db860f9994de0 removed an over-broad numeric-port-range claim; GREEN c38e0f21fafa8880ab7856a3a712d714a771450c forces stdlib parsed_uri.port syntax validation and maps parser failure to the stable accounting validation error.
  2. RED 3335edc22b85b4e0772c444ce9f64fd481bc9f1f proved https://:443/... and https://reporting-user@/... can have non-empty netloc but no origin host. GREEN 6e8978e7e0d41fb8ed5e516155d7ad7488a806e6 evaluates stdlib hostname plus port and rejects an empty HTTP(S) host. Documentation descendants add RFC 9110 traceability/acceptance.
  3. RED ea46ebae4c80a778e1a2327888a737b38a125012 proved authority-form or incomplete URNs could be admitted. GREEN 54e23f2fb0b49d57b1d2b4e108da680785a6f710 rejects a URN authority, requires a bounded alphanumeric/hyphen NID and non-empty NSS. 82a69abd... completed the RFC 8141 acceptance and reached hosted Foundation GREEN before the next review finding.
  4. Fresh review found a security/input-integrity gap: https://reporting-user@example.com/... and https://reporting-user:secret@example.com/... retained URI userinfo because only host and port were validated. RED daf89cf1b37d7e9830145a1acd6a99e0b5e72105 requires both forms to fail. Minimal production repair b996252fa5c400edbda2b67774f01df8c2c70c05 continues using urlparse, evaluates parsed_uri.username, and rejects any HTTP(S) userinfo while retaining existing host/port/percent/URN behavior. This follows RFC 9110 §4.2.4 for untrusted HTTP(S) references and the RFC 3986 userinfo security guidance; it does not create a resolver, dereference a URL, or establish network/taxonomy trust.
  5. Documentation descendants 859dc40dec0ad8aa9b3571cb7f39b2c109c9e569 and current e4bc1b417866737e09d7b08a35f6b007953d5bad bind that userinfo control into docs/doctoring/XBRL_STANDARD_TRACEABILITY.md and docs/testing/FINANCIAL_REPORTING_TEST_MATRIX.md. Current e4bc1b4... has reacquired exact-head Accounting Foundation GREEN, standalone Security/SAST GREEN, and CodeRabbit no-findings evidence; central CodeQL and qualifying approval remain outstanding.

A bespoke HTTP authority, credential parser, or URN resolver remains rejected because it would duplicate standard parsing and enlarge the security/trust surface. URI validation here is a proposal-input integrity boundary only. Secrets and authenticated transport identity belong to a purpose-limited adapter/secret store and must not become immutable report/profile identifiers.

Standards / profile state

The IFRS Foundation confirms that IFRS Accounting Taxonomy 2025 remains the current taxonomy for 2026 reporting until the next annual taxonomy is issued in Q1 2027. 2026 Proposed Update 1 and Proposed Update 2 remain proposal/consultation artifacts, not released filing authority. #50 does not embed or redistribute the IFRS taxonomy and makes no IFRS conformance claim. Issue #51 owns immutable released-profile/package-digest, independent validation, publication, filing and receipt evidence.

RFC 3986 remains the generic URI-syntax basis for percent encoding, authority grammar and userinfo security guidance. RFC 9110 supplies the HTTP(S)-specific non-empty origin-host and no-userinfo rule for untrusted HTTP(S) identifiers. RFC 8141 supplies the bounded assigned-name structure used for the current URN guard. The implementation intentionally makes no complete RFC 8141 conformance or resolver claim.

Explicit non-claims

This PR does not claim authoritative AIS database origin from the pure builder, IFRS Accounting Taxonomy or DART conformance, XBRL Certified Software status, XBRL 2.1 schema/linkbase validation, Calculations 1.1 or Formula validation, Inline XBRL generation, filing readiness or regulator acceptance, statutory statement/disclosure completeness, approval, publication, audit, or assurance.

Documentation and successor work

Current PR-owned documents include docs/adr/0067-financial-report-artifact-xbrl-boundary.md, docs/FINANCIAL_REPORTING.md, the XBRL design/plan, docs/doctoring/XBRL_STANDARD_TRACEABILITY.md, and docs/testing/FINANCIAL_REPORTING_TEST_MATRIX.md, with PRD/TRD/Architecture/Data Model updates. PR #37 remains the single writer for docs/product-technical-gap-baseline.md, shared CHANGELOG.md, and canonical cross-product standards rebuild; the HTTP(S)-userinfo invariant has been handed to #37 rather than editing those broad surfaces concurrently.

Issue #51 owns the missing authoritative report round trip: PostgreSQL report-run/source registry, forced tenant isolation, object-storage lifecycle, immutable released IFRS/DART profiles, independent XBRL/Calculations/Formula/jurisdiction validation, accessible HTML/PDF/XLSX/Inline XBRL renderers, localized explanation, maker-checker approval, publication, regulator/customer receipts, supersession, withdrawal, recovery, and release evidence. The same successor lane has been ratcheted so profile/filing/report identifiers cannot retain URI userinfo or credentials.

Review admission / merge boundary

Keep Draft until unchanged exact e4bc1b417866737e09d7b08a35f6b007953d5bad obtains authenticated terminal current-generation CodeQL evidence plus all other applicable protected/model/review/security evidence and a qualifying independent approval. Predecessor, queued, pending, stale, synthetic merge-ref, dynamic-code-quality-only, Foundation-internal-only, or model-only evidence cannot substitute for an applicable required gate. Do not merge, auto-merge, self-approve, bypass, force-push, destructively rebase, tag, version or release while any exact-head repository/security/package/review gate is non-passing. The pure proposal boundary must remain non-authoritative, and a later authoritative reporting command must derive source/report context from AIS-owned persistence rather than caller labels.

@coderabbitai

coderabbitai Bot commented Sep 3, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

호출자 제공 재무제표 패키지를 검증하는 financial_reporting 패키지를 추가했습니다. 패키지는 결정적 비권위 보고서 아티팩트와 미검증 XBRL 2.1 제안을 생성합니다. AIS 소유 권위 보고서 발행 경로는 후속 작업으로 분리했습니다.

Changes

재무보고 제안 흐름

Layer / File(s) Summary
보고 컨텍스트와 입력 계약
src/accounting_information_platform/financial_reporting/contracts.py, src/accounting_information_platform/financial_reporting/primitives.py, src/accounting_information_platform/__init__.py, tests/test_financial_reporting_context.py, tests/test_financial_reporting_input_hardening.py
FinancialReportContext, XbrlConceptMapping, XbrlTaxonomyProfile을 추가했습니다. 금액, URI, XML 텍스트, JSON, 날짜와 매핑을 검증합니다. 공개 API를 패키지 루트에서 재수출합니다.
재무제표 검증과 보고서 아티팩트
src/accounting_information_platform/financial_reporting/statements.py, src/accounting_information_platform/financial_reporting/artifact.py, tests/financial_reporting_fixtures.py, tests/test_financial_reporting.py, tests/test_financial_reporting_artifact_validation.py
네 가지 재무제표를 정규화하고 손익, 재무상태표, 자본, 현금흐름 통제를 수행합니다. 정확한 fact, 설명, 증거 경로, 스냅샷 참조와 SHA-256 해시를 포함한 proposed 아티팩트를 생성합니다.
XBRL 제안 직렬화와 무결성 재검증
src/accounting_information_platform/financial_reporting/xbrl.py, tests/test_xbrl_reporting_validation.py
아티팩트를 재구성하고 해시를 검증합니다. taxonomy 매핑과 기간 유형을 확인한 뒤 현재·비교 context, 통화 unit, schema reference와 mapped fact를 포함한 결정적 XBRL 출력을 생성합니다.
권위 경계와 후속 경로 문서화
docs/ARCHITECTURE.md, docs/DATA_MODEL.md, docs/FINANCIAL_REPORTING.md, docs/PRD.md, docs/TRD.md, docs/adr/*, docs/doctoring/*, docs/superpowers/*, docs/testing/*
비권위 제안과 AIS 소유 권위 보고서 경계를 문서화했습니다. PostgreSQL REPEATABLE READ, 독립 검증, 승인, 게시 영수증, 영속성 모델과 후속 구현 요구사항을 정의했습니다.

Estimated code review effort: 4 (Complex) | ~60 minutes

Merge Risk: 🟡 Moderate · up to b8cac

Report proposals can combine incompatible snapshot claims, weakening provenance reliability. This material integrity defect should be fixed before merge; malformed public inputs also need consistent validation errors.

Sequence Diagram(s)

sequenceDiagram
  participant 호출자
  participant build_financial_report_artifact
  participant export_xbrl_instance
  participant XBRL 인스턴스
  호출자->>build_financial_report_artifact: 재무제표 패키지와 보고 컨텍스트 전달
  build_financial_report_artifact->>build_financial_report_artifact: 입력 검증 및 비권위 아티팩트 생성
  호출자->>export_xbrl_instance: 아티팩트와 taxonomy profile 전달
  export_xbrl_instance->>build_financial_report_artifact: 아티팩트 재구성 및 비교
  export_xbrl_instance->>XBRL 인스턴스: context, unit, mapped fact 직렬화
Loading
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 78 functions across 13 files. (10 skipped:…
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.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 미검증 재무 보고서 아티팩트와 XBRL 제안 생성을 명확하게 설명하며, 변경사항의 주요 목적과 일치합니다.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/financial-reporting-xbrl-export

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.

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Current-head financial-reporting authority finding on ad12c3234c1c4c8117a8b5212e98d7818258ee25: the new pure builder currently accepts any caller-supplied mapping that satisfies the four arithmetic controls and mints an AIS-shaped urn:cwl:accounting:financial_report:<sha> artifact. Its hash proves only the bytes it received; it does not prove that tenant_reference, legal entity/book/period identity, monetary populations, report currency/date context, or snapshot references came from an AIS-owned PostgreSQL read/receipt. FinancialReportContext is likewise caller-supplied, so an otherwise balanced synthetic package can be relabeled with a different reporting currency/date/entity filing identity and still become a deterministic XBRL instance.

That boundary is weaker than this repository's authority model: accounting truth must remain database-owned and retained provenance must distinguish authoritative/observed/proposed material. A content hash is evidence identity, not origin/authority proof.

RED acceptance before treating this as buyer-authoritative reporting: (1) construct a balanced synthetic statement package for an unrecorded tenant/entity/book/period and prove it cannot produce an artifact that claims authoritative AIS financial-report truth; (2) take a real package and change only caller report currency/current/comparison dates, and prove mismatched context cannot be published as authoritative XBRL; (3) prove a live/non-close-snapshot package is either explicitly unverified/provisional or rejected by the authoritative publication path; (4) prove the positive owner path loads the four statements plus reporting currency/period/snapshot provenance from one repeatable-read AIS boundary and binds those facts into the artifact identity.

Narrow GREEN can preserve a pure deterministic serializer, but it must be truth-status explicit and non-authoritative unless an owner-controlled AIS command/read boundary supplies and verifies the source package/context provenance. Prefer a high-level API that takes tenant/entity/book/period identifiers and obtains the package and database-owned reporting context itself; keep the low-level mapping builder private/internal or label its output unverified. Do not solve this by trusting a caller flag, an arbitrary SHA-shaped source reference, or a taxonomy-profile assertion. XBRL serialization should consume only the resulting provenance-bound artifact when emitting an authoritative accounting report. Keep the existing exact-decimal and no-filing-conformance claims.

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Current-head revalidation on d27220eee76147d69be2ee071cdb016f36f17186: the one intervening commit only exposes build_financial_report_artifact and export_xbrl_instance from the repository root, so the prior source-authority finding remains valid and is now part of the top-level public API. No source/package provenance control was added by that delta.

Keep the reporting slice Draft until a realistic RED proves that an arbitrary balanced mapping cannot mint buyer-authoritative AIS financial-report/XBRL truth, and until the owner path binds database-owned tenant/entity/book/period/reporting-currency/snapshot provenance (or explicitly classifies the pure serializer output as non-authoritative/unverified). Do not treat content SHA-256, caller dates/currency/entity identifier, or taxonomy-profile metadata as origin/authority proof. Preserve the existing exact-decimal arithmetic and explicit filing/conformance non-claims.

Copy link
Copy Markdown
Contributor Author

Fresh exact-head gate correction / current-producer canary (2026-09-08 KST): PR #50 is still unchanged at 50cf7c5fb15ca65272748e165ab7351f5925dc2a on develop@239008c4edc7d305c97704c5102b593c6622b36f. The PR body sentence grouping standalone CodeQL, Security, and SAST as queued/non-passing is stale: Security 34083432471 and SAST 34083432469 are terminal GREEN; required CodeQL run 34083432430 was the remaining RED.

I used the supported failed-jobs rerun without source churn on that exact CodeQL run so this immutable AIP head can exercise the current protected central producer rather than a predecessor callback. Run 34083432430 is now attempt 2. Detect CodeQL languages is successful; fresh compatibility jobs are 101804189552 (actions) and 101804189748 (python). At this evidence read both are queued with runner_id=0, steps=[], so this is not terminal CodeQL evidence and nothing is being called GREEN by inheritance.

Do not create a leaf no-op commit, synthetic status, provider/status workaround, PAT bypass, or gate weakening to move this canary. The current owner-plane acceptance remains authenticated terminal receipt/publication and consumer settlement on this unchanged head under protected .github/main@78a4937c684a54ca8e415822c913742f41c6efc4. If the two compatibility jobs reach terminal failure/success, classify that result from their exact steps before any source change.

@seonghobae
seonghobae marked this pull request as draft September 7, 2026 16:18

Copy link
Copy Markdown
Contributor Author

Current source-owner repair supersedes the stale exact-state section in the PR body.

Fresh review found a real RFC 3986/HTTP authority boundary defect in the shared report/XBRL URI value object: the previous _absolute_uri() accepted https://example.com:accounting/taxonomy.xsd because urlparse() populated netloc without validating the authority port. That could admit a malformed taxonomy namespace/schema/entity URI into a deterministic XBRL proposal even though the proposal remains non-authoritative.

TDD lineage on this branch:

  • RED 00ac8baa79cdaa33fdf319e37d5aaad325fb8570: added an invalid-port regression;
  • scope correction fc3889bc2f3c76f09a1b4e58a2db860f9994de0: narrowed the standard claim to the actual RFC 3986 requirement that a URI port component is digits, instead of treating a numeric value above 65535 as an RFC syntax failure;
  • minimal production fix c38e0f21fafa8880ab7856a3a712d714a771450c: after the existing HTTP(S) authority check, force standard-library port validation and map invalid authority-port syntax to the stable AccountingValidationError("... must be an absolute URI"). Valid %20 and URN cases remain accepted; accounting amounts, statement controls, AIS source authority and publication truth are unchanged;
  • standards/docs descendants 9cd5210a13245a329cf000a97ec12f661a9956c3 and current 57360b6881fa892fd61415b322a96cd0cb7b64ba: update the PR-owned XBRL standards trace and reporting test matrix. The trace now also records the IFRS Foundation's February 2026 primary-source confirmation that IFRS Accounting Taxonomy 2025 remains the released current taxonomy for 2026 reporting. 2026 proposed updates remain non-filing authority and the authoritative-profile successor stays [Product Gap] Complete statutory report publishing and validated XBRL round trip #51.

Current exact head is therefore 57360b6881fa892fd61415b322a96cd0cb7b64ba on unchanged protected base develop@239008c4edc7d305c97704c5102b593c6622b36f. I converted the PR back to Draft while the new exact-head gates run. Old 50cf7c5... Foundation/Security/SAST GREEN and its CodeQL rerun are predecessor evidence only and do not transfer. Fresh exact-head Accounting Foundation 34142616676, Security 34142616673, SAST 34142616691, and CodeQL 34142616684 are currently queued, so no current-head GREEN or merge-ready claim is being made.

Decision rationale: a bespoke authority parser was rejected because it would duplicate standard-library IPv6/user-info/authority semantics and create a larger security surface. The smallest fail-closed boundary is to keep the existing urlparse() ownership and force validation of its parsed port. Risk: the standard library also rejects operationally unusable numeric HTTP ports outside its accepted range; no current report/taxonomy contract relies on such a port, and the explicit regression is limited to non-numeric syntax. If review identifies a legitimate high-port contract requirement, split syntactic and operational validation in a follow-up RED rather than weakening this boundary.

Copy link
Copy Markdown
Contributor Author

/opencode

Re-review exact head 8a08cec57959a0f51873d065fd858427126bd432 only. The bounded new source delta after predecessor 57360b6881fa892fd61415b322a96cd0cb7b64ba is the HTTP(S) origin-host validation repair: RED 3335edc22b85b4e0772c444ce9f64fd481bc9f1f proves hostless authorities such as https://:443/taxonomy.xsd and https://reporting-user@/taxonomy.xsd must fail; production fix 6e8978e7e0d41fb8ed5e516155d7ad7488a806e6 evaluates stdlib hostname and port and rejects an empty host without dereferencing the URI or expanding taxonomy/accounting authority; a73b3b9... and current 8a08cec... add RFC 9110 traceability and acceptance-matrix coverage. Please verify that valid host/IPv6/percent-encoding behavior and the existing RFC 3986 non-numeric-port boundary remain intact, and that no new network/trust authority was introduced.

Predecessor 57360b688... has hosted Accounting Foundation GREEN with 5,513/5,513 production statements and 2,002/2,002 branches, but that evidence is predecessor-only. Current-head Foundation/Security/SAST are queued and CodeQL is pending, so do not transfer GREEN evidence. Draft is intentional. Do not self-approve, bypass, merge, force-push, destructively rebase, release, or add a leaf provider/status workaround.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Please review current exact head 8a08cec57959a0f51873d065fd858427126bd432, especially the bounded _absolute_uri() HTTP(S) authority change (3335edc... RED -> 6e8978e... GREEN) and its RFC 9110 traceability. Treat current Accounting Foundation 34146242854 as exact-head GREEN, but do not treat still-queued standalone Security/SAST/CodeQL or missing independent approval as passing.

@coderabbitai

coderabbitai Bot commented Sep 7, 2026

Copy link
Copy Markdown
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

expected_head="8a08cec57959a0f51873d065fd858427126bd432"
actual_head="$(git rev-parse HEAD)"
printf 'HEAD expected=%s actual=%s\n' "$expected_head" "$actual_head"
git status --short
printf '\n== Bounded commit diff ==\n'
git diff --check 57360b6881fa892fd61415b322a96cd0cb7b64ba..HEAD
git diff --stat 57360b6881fa892fd61415b322a96cd0cb7b64ba..HEAD
git diff --find-renames --unified=80 57360b6881fa892fd61415b322a96cd0cb7b64ba..HEAD -- \
  src/accounting_information_platform/financial_reporting/primitives.py \
  tests/test_xbrl_reporting_validation.py \
  docs/doctoring/XBRL_STANDARD_TRACEABILITY.md \
  docs/testing/FINANCIAL_REPORTING_TEST_MATRIX.md

printf '\n== Source outline ==\n'
ast-grep outline src/accounting_information_platform/financial_reporting/primitives.py --items all

printf '\n== URI validation and direct tests ==\n'
rg -n -C 12 --glob '*.py' '_absolute_uri\s*\(|hostname|\.port\b|https?://' \
  src/accounting_information_platform/financial_reporting tests

printf '\n== Traceability mentions ==\n'
rg -n -C 8 -i 'RFC 9110|authority|host|absolute URI|URI' \
  docs/doctoring/XBRL_STANDARD_TRACEABILITY.md \
  docs/testing/FINANCIAL_REPORTING_TEST_MATRIX.md

Length of output: 159484


🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ContextualWisdomLab/accounting-information-platform"
sha="8a08cec57959a0f51873d065fd858427126bd432"

printf '== Commit ==\n'
gh api "repos/$repo/commits/$sha" --jq '{sha:.sha, parents:[.parents[].sha], message:.commit.message}'

printf '\n== Check runs ==\n'
gh api "repos/$repo/commits/$sha/check-runs?per_page=100" \
  --jq '.check_runs[] | {name, status, conclusion, details_url, started_at, completed_at}'

printf '\n== Combined status ==\n'
gh api "repos/$repo/commits/$sha/status" \
  --jq '{state, statuses:[.statuses[] | {context, state, target_url, created_at}]}'

printf '\n== PR review decision state ==\n'
gh pr view 50 --repo "$repo" --json isDraft,reviewDecision,reviews \
  --jq '{isDraft, reviewDecision, reviews:[.reviews[] | {author:.author.login, state, submittedAt, commit:.commit.oid}]}'

Length of output: 9831


🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ContextualWisdomLab/accounting-information-platform"
run_id="34146242854"
job_id="101818827651"

printf '== Accounting Foundation job metadata ==\n'
gh api "repos/$repo/actions/jobs/$job_id" \
  --jq '{name,status,conclusion,head_sha,started_at,completed_at,steps:[.steps[] | {name,status,conclusion,number}]}'

printf '\n== Accounting Foundation job log highlights ==\n'
gh run view "$run_id" --repo "$repo" --job "$job_id" --log 2>&1 \
  | rg -n -i -C 2 'unittest|financial_reporting_uri_rfc3986|coverage|repository contracts|compile|wheel|pass|fail|error' \
  || true

printf '\n== RED commit ==\n'
git show --format=fuller --find-renames --unified=50 3335edc22b85b4e0772c444ce9f64fd481bc9f1f -- \
  tests/test_financial_reporting_uri_rfc3986_red.py

printf '\n== GREEN commit ==\n'
git show --format=fuller --find-renames --unified=50 6e8978e7e0d41fb8ed5e516155d7ad7488a806e6 -- \
  src/accounting_information_platform/financial_reporting/primitives.py

printf '\n== Generation-path network imports/calls ==\n'
rg -n -C 2 --glob '*.py' \
  '^\s*(import|from)\s+(urllib\.request|requests|http\.client|socket|aiohttp|httpx)\b|\b(urlopen|requests\.(get|post|request)|httpx\.(get|post|request)|socket\.)\s*\(' \
  src/accounting_information_platform/financial_reporting

Length of output: 218832


@seonghobae No findings for exact head 8a08cec57959a0f51873d065fd858427126bd432.

_absolute_uri() now evaluates both parsed_uri.hostname and parsed_uri.port inside the existing ValueError conversion boundary. It rejects an empty HTTP(S) host with AccountingValidationError. This covers the reported hostless authority forms. It preserves the standard-library authority, IPv6, and port parsing path.

The regression test covers both https://:443/taxonomy.xsd and https://reporting-user@/taxonomy.xsd. It also retains valid percent-encoded paths. The change does not add URI dereferencing, taxonomy loading, or network access in financial_reporting.

The RFC 9110 traceability entry accurately limits this control to proposal-input validation. The documentation continues to state that proposals are non-authoritative and not filing-ready.

Accounting Foundation job 101818827651 verified the exact SHA. It completed full test discovery, 100% statement and branch coverage, repository validation, compilation, and reproducible-wheel checks. The coverage result was 5,516/5,516 statements and 2,004/2,004 branches.

Queued or skipped standalone checks remain non-passing. The Draft state and missing independent approval remain appropriate.

⚠️ Action not completed

Head commit changed.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor Author

/opencode

Re-review exact head 82a69abd6b89e489da8a5a8bf01657ef18dbd069 only. New bounded delta after predecessor 8a08cec57959a0f51873d065fd858427126bd432 is RFC 8141 structural URN admission: RED ea46ebae4c80a778e1a2327888a737b38a125012 requires authority-form/incomplete names (urn://example.com/taxonomy, urn:cwl, urn::taxonomy, urn:cwl:) to fail while retaining urn:cwl:taxonomy:ifrs-2025; GREEN candidate 54e23f2fb0b49d57b1d2b4e108da680785a6f710 keeps stdlib parsing, rejects non-empty URN authority, requires a bounded alphanumeric/hyphen NID with alphanumeric ends and a non-empty NSS; d547b8bd... / current 82a69abd... add RFC 8141 traceability and acceptance. Please verify existing RFC 3986 percent/backslash/non-numeric-port and RFC 9110 HTTP host behavior remains intact, and that this does not introduce namespace resolution/dereference/taxonomy trust or broader accounting authority.

Predecessor 8a08cec... has hosted Foundation GREEN with 5,516/5,516 production statements and 2,004/2,004 branches, but that evidence is predecessor-only. Current-head Foundation 34147350991 is pending and Security/SAST/CodeQL are queued. Draft is intentional. Do not self-approve, merge, bypass, force-push, destructively rebase, release, or add leaf status/provider workarounds.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Please review exact current head 82a69abd6b89e489da8a5a8bf01657ef18dbd069, focusing on the RFC 8141 structural URN RED ea46ebae... -> production fix 54e23f2f... and d547b8bd.../82a69abd... traceability. Treat predecessor 8a08cec... Foundation GREEN as predecessor-only; current Foundation/Security/SAST/CodeQL are non-passing until terminal on this head.

@coderabbitai

coderabbitai Bot commented Sep 7, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

expected_head="82a69abd6b89e489da8a5a8bf01657ef18dbd069"
predecessor="8a08cec57959a0f51873d065fd858427126bd432"

printf '== Exact head ==\n'
printf 'expected=%s\nactual=%s\n' "$expected_head" "$(git rev-parse HEAD)"
git status --short
git diff --check "$predecessor..HEAD"
git diff --stat "$predecessor..HEAD"

printf '\n== Candidate files ==\n'
fd -a 'primitives.py|test_financial_reporting_uri_rfc3986_red.py|XBRL_STANDARD_TRACEABILITY.md|FINANCIAL_REPORTING_TEST_MATRIX.md' . \
  | sort

printf '\n== Source structure ==\n'
ast-grep outline src/accounting_information_platform/financial_reporting/primitives.py --items all

printf '\n== Bounded source, test, and documentation delta ==\n'
git diff --find-renames --unified=100 "$predecessor..HEAD" -- \
  src/accounting_information_platform/financial_reporting/primitives.py \
  tests \
  docs/doctoring/XBRL_STANDARD_TRACEABILITY.md \
  docs/testing/FINANCIAL_REPORTING_TEST_MATRIX.md

printf '\n== RED and GREEN commits ==\n'
git show --format=fuller --find-renames --unified=100 \
  ea46ebae4c80a778e1a2327888a737b38a125012 \
  54e23f2fb0b49d57b1d2b4e108da680785a6f710 -- \
  src/accounting_information_platform/financial_reporting/primitives.py tests

printf '\n== URI implementation and direct test evidence ==\n'
rg -n -C 20 --glob '*.py' \
  'def _absolute_uri\b|parsed_uri\.(hostname|port|netloc|scheme)|urn:|RFC 8141|absolute URI' \
  src/accounting_information_platform/financial_reporting tests

printf '\n== Generation-path network access search ==\n'
rg -n -C 2 --glob '*.py' \
  '^\s*(import|from)\s+(urllib\.request|requests|http\.client|socket|aiohttp|httpx)\b|\b(urlopen|requests\.(get|post|request)|httpx\.(get|post|request)|socket\.)\s*\(' \
  src/accounting_information_platform/financial_reporting || true

printf '\n== Traceability evidence ==\n'
rg -n -C 10 -i 'RFC 8141|URN|RFC 3986|RFC 9110|derefer|resolv|trust|authority' \
  docs/doctoring/XBRL_STANDARD_TRACEABILITY.md \
  docs/testing/FINANCIAL_REPORTING_TEST_MATRIX.md

Length of output: 202546


🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ContextualWisdomLab/accounting-information-platform"
sha="82a69abd6b89e489da8a5a8bf01657ef18dbd069"

printf '== Commit identity ==\n'
gh api "repos/$repo/commits/$sha" \
  --jq '{sha:.sha,parents:[.parents[].sha],message:.commit.message}'

printf '\n== Exact-head check runs ==\n'
gh api "repos/$repo/commits/$sha/check-runs?per_page=100" \
  --jq '.check_runs[] | {name,status,conclusion,details_url,started_at,completed_at}'

printf '\n== Exact-head combined status ==\n'
gh api "repos/$repo/commits/$sha/status" \
  --jq '{state,statuses:[.statuses[] | {context,state,target_url,created_at}]}'

printf '\n== PR state and reviews ==\n'
gh pr view 50 --repo "$repo" --json headRefOid,isDraft,reviewDecision,reviews \
  --jq '{headRefOid,isDraft,reviewDecision,reviews:[.reviews[] | {author:.author.login,state,commit:.commit.oid,submittedAt}]}'

Length of output: 8244


🏁 Script executed:

#!/bin/bash
set -euo pipefail

predecessor="8a08cec57959a0f51873d065fd858427126bd432"
head="82a69abd6b89e489da8a5a8bf01657ef18dbd069"

printf '== Head and changed paths ==\n'
git rev-parse HEAD
git diff --name-status "$predecessor..$head"
git diff --check "$predecessor..$head"

printf '\n== primitives.py: imports and _absolute_uri ==\n'
nl -ba src/accounting_information_platform/financial_reporting/primitives.py | sed -n '1,180p'

printf '\n== URI test file outline ==\n'
ast-grep outline tests/test_financial_reporting_uri_rfc3986_red.py --items all

printf '\n== URI test file ==\n'
nl -ba tests/test_financial_reporting_uri_rfc3986_red.py | sed -n '1,260p'

printf '\n== Exact bounded implementation/test diff ==\n'
git diff --unified=60 "$predecessor..$head" -- \
  src/accounting_information_platform/financial_reporting/primitives.py \
  tests/test_financial_reporting_uri_rfc3986_red.py

printf '\n== RED commit test delta ==\n'
git show --format=fuller --unified=60 ea46ebae4c80a778e1a2327888a737b38a125012 -- \
  tests/test_financial_reporting_uri_rfc3986_red.py

printf '\n== GREEN commit production delta ==\n'
git show --format=fuller --unified=60 54e23f2fb0b49d57b1d2b4e108da680785a6f710 -- \
  src/accounting_information_platform/financial_reporting/primitives.py

printf '\n== Exact documentation diff ==\n'
git diff --unified=30 "$predecessor..$head" -- \
  docs/doctoring/XBRL_STANDARD_TRACEABILITY.md \
  docs/testing/FINANCIAL_REPORTING_TEST_MATRIX.md

Length of output: 2160


🤖 web_search executed:

RFC 8141 Uniform Resource Names section 3 NID syntax length 2 32 NSS ABNF

Length of output: 20537


🏁 Script executed:

#!/bin/bash
set -euo pipefail

predecessor="8a08cec57959a0f51873d065fd858427126bd432"
head="82a69abd6b89e489da8a5a8bf01657ef18dbd069"

printf '== primitives.py ==\n'
sed -n '1,180p' src/accounting_information_platform/financial_reporting/primitives.py

printf '\n== URI regression tests ==\n'
sed -n '1,280p' tests/test_financial_reporting_uri_rfc3986_red.py

printf '\n== Bounded primitive and test diff ==\n'
git diff --unified=80 "$predecessor..$head" -- \
  src/accounting_information_platform/financial_reporting/primitives.py \
  tests/test_financial_reporting_uri_rfc3986_red.py

printf '\n== RED commit ==\n'
git show --format=fuller --unified=80 ea46ebae4c80a778e1a2327888a737b38a125012 -- \
  tests/test_financial_reporting_uri_rfc3986_red.py

printf '\n== GREEN commit ==\n'
git show --format=fuller --unified=80 54e23f2fb0b49d57b1d2b4e108da680785a6f710 -- \
  src/accounting_information_platform/financial_reporting/primitives.py

printf '\n== Documentation delta ==\n'
git diff --unified=40 "$predecessor..$head" -- \
  docs/doctoring/XBRL_STANDARD_TRACEABILITY.md \
  docs/testing/FINANCIAL_REPORTING_TEST_MATRIX.md

Length of output: 56065


@seonghobae No findings for exact head 82a69abd6b89e489da8a5a8bf01657ef18dbd069.

_absolute_uri() now enforces the bounded RFC 8141 assigned-name shape. It rejects a URN authority, a missing separator, an invalid NID, and an empty NSS. The NID pattern enforces 2–32 ASCII alphanumeric-or-hyphen characters, with alphanumeric first and last characters. This matches the RFC 8141 structural rule. RFC 8141

The regression test rejects all reported malformed forms. It retains urn:cwl:taxonomy:ifrs-2025. Existing malformed-percent, raw-backslash, HTTP(S) host, and HTTP(S) port checks remain intact.

The traceability and test-matrix updates accurately state the limited validation scope. They do not claim URN resolution, namespace registration, dereferencing, taxonomy trust, AIS origin, or filing authority. The financial_reporting package contains no network-client import or call in the generation path.

The inspected GitHub state shows exact-head security, SAST, and dependency-diff jobs as successful. Accounting foundation was still in progress, and CodeQL-related jobs were queued. These non-terminal applicable checks remain non-passing. PR #50 remains Draft with REVIEW_REQUIRED.

You are interacting with an AI system.

Copy link
Copy Markdown
Contributor Author

/opencode

Re-review exact head e4bc1b417866737e09d7b08a35f6b007953d5bad only. New bounded delta after predecessor 82a69abd6b89e489da8a5a8bf01657ef18dbd069 is HTTP(S) userinfo rejection at the public report/taxonomy/entity URI boundary: RED daf89cf1b37d7e9830145a1acd6a99e0b5e72105 requires https://reporting-user@example.com/... and https://reporting-user:secret@example.com/... to fail; production repair b996252fa5c400edbda2b67774f01df8c2c70c05 keeps stdlib urlparse, rejects any parsed HTTP(S) username/userinfo, and preserves existing host/port/percent/URN behavior; 859dc40... and current e4bc1b4... bind RFC 9110 §4.2.4 / RFC 3986 guidance into PR-owned traceability and the acceptance matrix. Please verify no legitimate URI syntax relied upon by this proposal boundary was lost, no credential/parser/network/taxonomy authority was introduced, and all prior non-authoritative/reporting controls remain intact.

Predecessor 82a69abd... has hosted Foundation GREEN with 5,520/5,520 production statements and 2,006/2,006 branches, but that evidence and its CodeRabbit no-findings review are predecessor-only. Current exact-head Foundation/Security/SAST/CodeQL are non-passing until terminal. Draft is intentional. Do not self-approve, merge, bypass, force-push, destructively rebase, release, or add leaf provider/status workarounds.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Please review exact current head e4bc1b417866737e09d7b08a35f6b007953d5bad, focusing on RED daf89cf1... -> production repair b996252f... for HTTP(S) userinfo and 859dc40... / e4bc1b4... traceability. Treat predecessor 82a69abd... Foundation GREEN and no-findings review as predecessor-only; current Foundation/Security/SAST/CodeQL are non-passing until terminal. Verify the existing RFC 3986 percent/backslash/port, RFC 9110 host, RFC 8141 URN, exact-value and non-authoritative boundaries remain intact, with no new resolver/network/taxonomy/accounting authority.

@coderabbitai

coderabbitai Bot commented Sep 7, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

expected_head="e4bc1b417866737e09d7b08a35f6b007953d5bad"
predecessor="82a69abd6b89e489da8a5a8bf01657ef18dbd069"
repo="ContextualWisdomLab/accounting-information-platform"

printf '== Exact head and bounded change ==\n'
printf 'expected=%s\nactual=%s\n' "$expected_head" "$(git rev-parse HEAD)"
git status --short
git diff --check "$predecessor..HEAD"
git diff --name-status "$predecessor..HEAD"
git diff --unified=100 "$predecessor..HEAD" -- \
  src/accounting_information_platform/financial_reporting/primitives.py \
  tests \
  docs/doctoring/XBRL_STANDARD_TRACEABILITY.md \
  docs/testing/FINANCIAL_REPORTING_TEST_MATRIX.md

printf '\n== URI primitive structure and implementation ==\n'
ast-grep outline src/accounting_information_platform/financial_reporting/primitives.py --items all
nl -ba src/accounting_information_platform/financial_reporting/primitives.py | sed -n '1,220p'

printf '\n== RED and GREEN commit evidence ==\n'
git show --format=fuller --unified=100 daf89cf1b37d7e9830145a1acd6a99e0b5e72105 -- tests
git show --format=fuller --unified=100 b996252fa5c400edbda2b67774f01df8c2c70c05 -- \
  src/accounting_information_platform/financial_reporting/primitives.py

printf '\n== URI tests and all URI call sites ==\n'
rg -n -C 16 --glob '*.py' \
  'def _absolute_uri\b|_absolute_uri\(|username|hostname|\.port\b|urn:|userinfo|backslash|percent|absolute URI' \
  src/accounting_information_platform/financial_reporting tests

printf '\n== Public exports and proposal-status controls ==\n'
rg -n -C 5 --glob '*.py' \
  'authoritative_report|truth_status_code|source_authority_code|publication_readiness_code|filing_readiness_code|xbrl_validation_status_code|build_financial_report_artifact|export_xbrl_instance' \
  src/accounting_information_platform

printf '\n== Generation-path network imports and calls ==\n'
rg -n -C 2 --glob '*.py' \
  '^\s*(import|from)\s+(urllib\.request|requests|http\.client|socket|aiohttp|httpx)\b|\b(urlopen|requests\.(get|post|request)|httpx\.(get|post|request)|socket\.)\s*\(' \
  src/accounting_information_platform/financial_reporting || true

printf '\n== Traceability and matrix delta ==\n'
rg -n -C 10 -i \
  'RFC 9110|RFC 3986|RFC 8141|userinfo|credential|resolver|derefer|taxonomy trust|non-authoritative|filing-ready' \
  docs/doctoring/XBRL_STANDARD_TRACEABILITY.md \
  docs/testing/FINANCIAL_REPORTING_TEST_MATRIX.md

printf '\n== Exact-head GitHub state ==\n'
gh api "repos/$repo/commits/$expected_head/check-runs?per_page=100" \
  --jq '.check_runs[] | {name,status,conclusion,started_at,completed_at,details_url}'
gh api "repos/$repo/commits/$expected_head/status" \
  --jq '{state, statuses:[.statuses[] | {context,state,created_at,target_url}]}'
gh pr view 50 --repo "$repo" --json headRefOid,isDraft,reviewDecision,reviews \
  --jq '{headRefOid,isDraft,reviewDecision,reviews:[.reviews[] | {author:.author.login,state,commit:.commit.oid,submittedAt}]}'

Length of output: 47505


🏁 Script executed:

#!/bin/bash
set -euo pipefail

expected_head="e4bc1b417866737e09d7b08a35f6b007953d5bad"
predecessor="82a69abd6b89e489da8a5a8bf01657ef18dbd069"
repo="ContextualWisdomLab/accounting-information-platform"

printf '== Working tree and commit ancestry ==\n'
git status --short
git show -s --format='HEAD=%H%nparents=%P%nsubject=%s' HEAD
git merge-base --is-ancestor "$predecessor" "$expected_head"
printf 'predecessor_is_ancestor=%s\n' "$?"

printf '\n== Exact primitive and URI regression test ==\n'
sed -n '70,180p' src/accounting_information_platform/financial_reporting/primitives.py
sed -n '1,180p' tests/test_financial_reporting_uri_rfc3986_red.py

printf '\n== RED and GREEN deltas ==\n'
git show --format=fuller --unified=80 daf89cf1b37d7e9830145a1acd6a99e0b5e72105 -- tests
git show --format=fuller --unified=80 b996252fa5c400edbda2b67774f01df8c2c70c05 -- \
  src/accounting_information_platform/financial_reporting/primitives.py

printf '\n== URI consumer call sites ==\n'
rg -n -C 8 --glob '*.py' '\b_absolute_uri\s*\(' src/accounting_information_platform tests

printf '\n== Proposal classification and tamper/replay controls ==\n'
rg -n -C 6 --glob '*.py' \
  'authoritative_report|truth_status_code|source_authority_code|publication_readiness_code|filing_readiness_code|xbrl_validation_status_code|source_package_hash|report_artifact_hash|reproduc' \
  src/accounting_information_platform/financial_reporting tests

printf '\n== Generation-path network access search ==\n'
rg -n -C 2 --glob '*.py' \
  '^\s*(import|from)\s+(urllib\.request|requests|http\.client|socket|aiohttp|httpx)\b|\b(urlopen|requests\.(get|post|request)|httpx\.(get|post|request)|socket\.)\s*\(' \
  src/accounting_information_platform/financial_reporting || true

printf '\n== Current documentation claims ==\n'
rg -n -C 8 -i \
  'RFC 9110|userinfo|credential|RFC 3986|RFC 8141|resolver|derefer|taxonomy trust|non-authoritative|filing-ready' \
  docs/doctoring/XBRL_STANDARD_TRACEABILITY.md \
  docs/testing/FINANCIAL_REPORTING_TEST_MATRIX.md

printf '\n== Exact-head GitHub checks and review state ==\n'
gh api "repos/$repo/commits/$expected_head/check-runs?per_page=100" \
  --jq '.check_runs[] | {name,status,conclusion,started_at,completed_at,details_url}'
gh api "repos/$repo/commits/$expected_head/status" \
  --jq '{state,statuses:[.statuses[] | {context,state,created_at,target_url}]}'
gh pr view 50 --repo "$repo" --json headRefOid,isDraft,reviewDecision,reviews \
  --jq '{headRefOid,isDraft,reviewDecision,reviews:[.reviews[] | {author:.author.login,state,commit:.commit.oid,submittedAt}]}'

Length of output: 100857


@seonghobae No findings for exact head e4bc1b417866737e09d7b08a35f6b007953d5bad.

_absolute_uri() now reads parsed_uri.username within the existing ValueError boundary. It rejects every HTTP(S) URI with parsed userinfo. This includes both https://user@host/... and https://user:password@host/.... The error remains AccountingValidationError with the stable "must be an absolute URI" diagnostic.

The repair retains the existing standard-library parsing path. It does not change percent-escape, backslash, host, port, IPv6, or RFC 8141 URN validation. The URI consumers remain limited to FinancialReportContext.entity_identifier_scheme, XbrlTaxonomyProfile.taxonomy_namespace_uri, and XbrlTaxonomyProfile.schema_reference_uri.

The exact-Decimal numeric(38, 6) boundary remains unchanged. Artifact replay and hash verification remain in place. The artifact and XBRL outputs remain proposed, caller-supplied, unverified, and non-authoritative.

The reviewed financial_reporting source contains no network-client import or network call. The RFC 9110 traceability and test matrix correctly limit this change to proposal-input validation. They do not claim URI resolution, dereferencing, taxonomy trust, AIS origin, XBRL validation, or filing authority.

Exact-head Security and dependency-diff checks are successful. Accounting foundation is in progress. SAST and CodeQL-related checks are queued. These checks are non-passing until they reach terminal success. The Draft state and REVIEW_REQUIRED decision remain appropriate.

You are interacting with an AI system.

Copy link
Copy Markdown
Contributor Author

2026-09-09 central-owner correction for exact e4bc1b417866737e09d7b08a35f6b007953d5bad (no Reporting/XBRL source change): the PR body’s .github/main@78a4937... / #1929 owner block is stale. Protected central workflow authority is .github/main@7fd571dbcdbae6acf29d8f4ee704d7ba6297e4db; the current canonical combined repair is .github#2040@6706c231ab06a3c91c43fdb5b989cfcd79fff593. Required CodeQL 34251822255 is terminal FAILURE, so the current AIP proposal head still lacks authenticated current-generation CodeQL evidence despite its retained Foundation/Security/SAST GREEN.

Fresh independent consumer canary Orgmetra#65@b7f2b730b8b231aa28e485c655fd8cdf18007d46 / required run 34289116329 shows the remaining central defect is not safely characterized as coordinator reread alone: Actions receiver 102271601195 failed at 23:14:02Z and Python receiver 102271601217 at 23:14:03Z, but authoritative dispatch 102273249299 began only at 23:17:33Z and then succeeded. Receiver enforcement can therefore terminal-fail before same-run dispatch/publication evidence has a chance to settle. Canonical repair must impose a terminal authenticated producer/dispatch evidence barrier (or equivalent ordering) while retaining exact repository/PR/base/head/language/required-run/SARIF identity.

No historical AIP rerun, leaf PAT/status workaround, synthetic success, no-op push, actor/sender weakening, or predecessor verdict transfer is accepted. #50 stays Draft and non-authoritative; this correction changes neither XBRL/report truth nor the Issue #51 successor boundary.

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

Projects

Status: Backlog

Development

Successfully merging this pull request may close these issues.

1 participant