Skip to content

fix(people): protect governed mutation runtime types - #64

Draft
seonghobae wants to merge 271 commits into
developfrom
fix/hire-identity-type-integrity
Draft

fix(people): protect governed mutation runtime types#64
seonghobae wants to merge 271 commits into
developfrom
fix/hire-identity-type-integrity

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Current execution receipt — 2026-09-13

  • Exact head: c0ba482c57a77820128f259b4a43c06df643c0f3; protected base: develop@eb9757f8649aaad026a9865508d9aad50c1a7a4f; open, Draft, mechanically mergeable. Mechanical mergeability is not merge authorization.
  • Strix defense-in-depth findings were repaired ordinary-forward rather than waived: f4f7e12d5edd253203c237d3a46703ca7449a8ba pins both SECURITY DEFINER pgcrypto calls to public.digest(...); 71d72267be22d3368517a8171b61321592bfb958 extends the PostgreSQL capability contract for database ownership/schema-CREATE/tenant-GUC boundaries; 120616b1de33c1ff5c0de09dceb77dfea06691b9 states that the tenant session GUC is a routing/RLS input established only after Keyverse-authenticated People-service tenant/actor binding, not an authentication factor.
  • Those sealed mutations produced a real deterministic Foundation RED at 120616b1...: manifest validation reported exact mismatches for migration 0014, THREAT_MODEL, and the capability PostgreSQL contract. c0ba482... reseals only those exact fingerprints; no provenance path was excluded or weakened.
  • Foundation CI 34747271197: SUCCESS on exact c0ba482..., including repository/provenance validation, OpenAPI contracts, owned Python/service tests at 100% statement and branch coverage, the workflow's isolated PostgreSQL contract set, and final clean/read-only validation. Recovery 34747271200: SUCCESS. SAST 34747271263: SUCCESS. Dynamic Code Quality 34747211676: SUCCESS. Required OpenCode 34747212198: SUCCESS. Required Noema 34747212207: SUCCESS on this exact head.
  • Required Strix 34747212212: SUCCESS on exact c0ba482.... The strix job 103697332156 completed Run Strix (quick), report collection, and artifact upload successfully. The report's security result contains zero SARIF findings and states no vulnerabilities were identified in the provided People source slice. Its separate note that Job Analysis Snapshot endpoints were not implemented is not an Orgmetra product gap: protected develop contains services/job-analysis-api/src/orgmetra_job_analysis_api/http.py plus route tests for the documented POST/GET endpoints. Treat that note as scope incompleteness of the People-only scan, not a repair finding.
  • Important acceptance boundary: the legacy Foundation PostgreSQL switchboard still enumerates a fixed contract list and does not execute the changed test_employment_separation_capability_postgres.sh nor all newer separation companions. The changed contract is provenance-required and source-reviewed, but its new database-owner/no-CREATE/GUC-mismatch assertions are not claimed hosted GREEN from Foundation. ci: make PostgreSQL Foundation discovery fail closed #311 remains the canonical generic protected-base PostgreSQL discovery/execution owner.
  • Security 34747271228: FAILURE only at authoritative Dependency Review availability. Exact protected-base→head support probe returned HTTP 403 (curl_exit=0); OSV, Trivy, and Scorecard are SUCCESS but are not substitutes. Fresh exact canary is recorded at central .github#810; no Orgmetra-local fallback or synthetic verdict.
  • CodeQL 34747271161: FAILURE in the shared producer-after-consumer settlement path, not a demonstrated Orgmetra source/SARIF finding. Actions job 103697626932 and Python job 103697626984 settled with VERDICT_STATE=pending; the coordinator/producer job 103698066725 did not start until after those consumers failed and then dispatched successfully. Fresh exact consumer evidence is recorded on canonical central #2040; prerequisite #2106 remains the bootstrap owner. No predecessor verdict transfer, no-op retrigger, synthetic status, or product-local workflow copy.
  • No qualifying independent current-head APPROVED review has been established. Keep Draft.

Employment separation contract

The active branch owns governed POST /v1/employment-separations with exact current-known Employment/version targeting, five controlled reasons (voluntary_resignation, retirement_transition, fixed_term_completion, position_elimination, employer_initiated_separation), human-confirmed versioned evidence, bitemporal supersession instead of in-place termination, append-only employment_separation_record, atomic People idempotency + audit/outbox, capability-separated PostgreSQL execution, and shared Employment-anchor serialization with Assignment creation.

Durable invariants:

  • optional continuation effective_to is structural interval closure; the terminal terminated version plus employment_separation_record is the authoritative separation fact;
  • Assignment INSERT and separation serialize on the same Employment aggregate root and re-read current coverage after lock wait; separation does not rewrite Assignment history;
  • same-key replay after an uncertain caller outcome returns the first durable terminal result without retry-only separation/audit/outbox side effects;
  • failure-path acceptance includes client and PostgreSQL server-session quiescence;
  • the executor is a trusted service capability, not an end-user/model tenant credential; the transition still rejects active session-tenant GUC / command-tenant disagreement before target lookup;
  • candidate_worker_conversion_record is recruiting provenance, not generic Employment/Assignment authorization and not rehire authority;
  • ADR 0015 remains Proposed; feat(people): add authoritative bitemporal Employment separation transition #314 remains open until authoritative separation reaches protected truth; feat(people): 재입사를 기존 Person + 새 Employment로 명시적으로 모델링 #302 rehire remains downstream/planned as existing Person + new Employment.

Remaining owner paths / buyer gaps

No self-approval, routine administrator bypass, force-push, destructive rebase, gate weakening, predecessor-evidence transfer, synthetic status, direct-provider fallback, or premature merge/release is authorized by this PR.

@coderabbitai

coderabbitai Bot commented Aug 21, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: b7c5b8f6-6a9e-48af-80fd-42512f13eafa

📥 Commits

Reviewing files that changed from the base of the PR and between 61cba0f and adab344.

📒 Files selected for processing (6)
  • services/people-api/src/orgmetra_people_api/postgres_hire.py
  • services/people-api/tests/test_postgres_hire_idempotency_text_runtime_integrity.py
  • services/people-api/tests/test_postgres_hire_provenance_text_runtime_integrity.py
  • services/people-api/tests/test_postgres_hire_row_container_runtime_integrity.py
  • services/people-api/tests/test_postgres_hire_timestamp_runtime_integrity.py
  • services/people-api/tests/test_postgres_hire_uuid_runtime_integrity.py
🚧 Files skipped from review as they are similar to previous changes (1)
  • services/people-api/tests/test_postgres_hire_timestamp_runtime_integrity.py

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

People 변이와 채용 수락 경계가 서브클래스를 거부하도록 변경되었습니다. UUID, 문자열, Decimal, 명령, 결과, 권한 결정, 시간값, PostgreSQL 행 형태에 정확한 타입 검사를 적용했습니다. 런타임 무결성 회귀 테스트와 변경 기록을 갱신했습니다.

Changes

People 런타임 무결성

Layer / File(s) Summary
정확한 타입 검증과 변이 경로
services/people-api/src/orgmetra_people_api/hire.py, services/people-api/src/orgmetra_people_api/mutations.py
People 변이와 채용 수락의 입력, 명령, 결과, 권한 결정 검사를 정확한 타입 검사로 변경했습니다. idempotency_record_id는 테넌트 UUID를 검증한 뒤 ID를 파생합니다.
PostgreSQL 경계 검증
services/people-api/src/orgmetra_people_api/postgres_hire.py, services/people-api/src/orgmetra_people_api/postgres_mutations.py
PostgreSQL 포트가 UUID, 시간, 고정 행 형태, digest, provenance 텍스트, 명령, 권한 결정의 정확한 타입을 검증합니다. 잘못된 입력은 데이터베이스 작업 전에 기존 오류 유형으로 거부합니다.
런타임 무결성 회귀 테스트
services/people-api/tests/*runtime_integrity.py
위조된 UUID, 문자열, Decimal, 명령, 결과, 권한 결정, 시간값, 행 컨테이너가 생성, digest, 라우팅, 서비스 경계, 데이터베이스 경계를 통과하지 못하는지 검증합니다.
변경 기록과 매니페스트
CHANGELOG.md, manifest.json
고용 및 position 식별자 변경과 governance 문구 검증 변경을 기록했습니다. CHANGELOG 메타데이터를 갱신했습니다.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Merge Risk: ⚪ Minimal · up to adab3

This change hardens People mutation and hire-acceptance inputs against executable subtype values while preserving supported built-in values and persistence behavior. No concrete current-head merge-blocking risk remains.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed Docstring coverage is 95.57% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 158 functions across 16 files.
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 제목은 People 변이의 런타임 타입 보호라는 주요 변경 사항을 정확하고 간결하게 설명합니다.
✨ 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 fix/hire-identity-type-integrity

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 changed the title fix(hire): protect governed identity runtime types fix(people): protect governed mutation runtime types Aug 21, 2026
@seonghobae
seonghobae marked this pull request as ready for review August 21, 2026 09:37
devin-ai-integration[bot]

This comment was marked as resolved.

@seonghobae
seonghobae marked this pull request as draft August 22, 2026 00:33
@seonghobae
seonghobae marked this pull request as ready for review August 22, 2026 00:37

Copy link
Copy Markdown
Contributor Author

Exact-head repair/evidence update for the current branch state:

  • RED ad38eb452ac1b072a146b5edf41a64a8e6553c78: direct PostgreSQL hire authority must reject HireAcceptanceCommand / AuthorizationDecision subclasses before database work.
  • GREEN 63eb051935df4291b2e423189503c0aec71b6ff1: PostgresHireAcceptancePort now requires the exact governed command and authorization runtime types.
  • RED 27623490127834413c9ffd2dc900cb06e6ca00a6: direct PostgreSQL People mutation authorization must reject AuthorizationDecision subclasses.
  • Current/root repair 76cb5b0d963ce5c2d273f23f8dce01444a38499a: _require_authorization(...) now uses the same exact governed AuthorizationDecision runtime contract as mutation_command_digest(...); the addressed review thread is resolved.

Fresh exact-current-head hosted evidence is terminal GREEN: People API Quality 32540865696, Foundation CI 32540865669, SAST Semgrep 32540865701, Security Scan 32540865651, Recovery Rehearsal Quality 32540865671. People API Quality explicitly passed the exact statement/branch coverage step on this head.

Live protected base remains develop@9e3e4847510e1e612b48474ba42b177b8ed824df; GitHub reports this PR open, mergeable, and ready-for-review. There is still no qualifying formal independent non-author APPROVE, so do not merge or reuse predecessor evidence.

devin-ai-integration[bot]

This comment was marked as resolved.

@seonghobae
seonghobae marked this pull request as draft August 22, 2026 00:42
@seonghobae
seonghobae marked this pull request as ready for review August 22, 2026 00:43

Copy link
Copy Markdown
Contributor Author

Current exact-head follow-up after fresh review:

A new review correctly identified that the three direct PostgresPeopleMutationPort entry points still used isinstance(...) for command gates even after the direct hire port was hardened. That left employment/position/assignment persistence entry points able to accept validation-bypassing command subclasses before reaching the exact-type command_route(...)/digest boundary.

  • RED e859d208766463be243dd84443a615fbc2c83da1 adds direct persistence regressions for forged EmploymentMutationCommand, PositionMutationCommand, and AssignmentMutationCommand subclasses and requires rejection before any database work.
  • Root repair/current head 0196bf545b6254a410c99be80216ac977a706683 makes all three PostgreSQL mutation entry points require the exact governed command runtime type. The matching review thread is resolved.

Fresh exact-current-head hosted evidence is terminal GREEN:

  • People API Quality 32541189508 — success; its People API contract and 100% coverage job passed the exact statement/branch coverage step.
  • Foundation CI 32541189493 — success.
  • SAST Semgrep 32541189460 — success.
  • Security Scan 32541189467 — success.
  • Recovery Rehearsal Quality 32541189512 — success.

Live protected base remains develop@9e3e4847510e1e612b48474ba42b177b8ed824df. The PR is open, mergeable and ready-for-review on current head 0196bf545b6254a410c99be80216ac977a706683. Submitted reviews remain COMMENTED only; there is no qualifying independent non-author APPROVE, so do not merge or reuse predecessor evidence.

devin-ai-integration[bot]

This comment was marked as resolved.

@seonghobae
seonghobae marked this pull request as draft August 22, 2026 01:07
@seonghobae
seonghobae marked this pull request as ready for review August 22, 2026 01:08
devin-ai-integration[bot]

This comment was marked as resolved.

@seonghobae

Copy link
Copy Markdown
Contributor Author

@opencode-agent Please review the current unchanged head against protected develop. Local exact-head verification: all owned package suites pass at 100% statement/branch coverage.

devin-ai-integration[bot]

This comment was marked as resolved.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Please review exact head 07e4230dd4157a36b17fa90f1eea498efb8cddca after its non-force adoption of protected develop@ef1b143368cb6249c9520ca8cae10ebe844a5aa1. Revalidate the generic People mutation command/result/authorization runtime boundaries on this exact head; predecessor review/check evidence does not transfer.

@coderabbitai

coderabbitai Bot commented Sep 3, 2026

Copy link
Copy Markdown

@seonghobae I will review exact head 07e4230dd4157a36b17fa90f1eea498efb8cddca against protected develop@ef1b143368cb6249c9520ca8cae10ebe844a5aa1. I will revalidate the generic People mutation command, result, and authorization runtime boundaries without relying on predecessor evidence.

⚠️ Action not completed

Already reviewed the last commit. Use @coderabbitai full review to rerun a review of the entire changeset.

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

Adjacent-owner freshness update: #65 advanced non-force to exact head 5e1eb4a5146ca1fb29e93a66f7475c469c14a9ed. The new repair is confined to People/Job Analysis authenticated-principal comparison semantics: strict principal-only __eq__ is now paired with strict __ne__, satisfying the existing raw-tuple inequality compatibility RED. #64 remains the canonical generic mutation command/result acceptance owner; do not copy #65 source or treat its mutable head as a released dependency.

Copy link
Copy Markdown
Contributor Author

Adjacent-owner successor update: #65 is now exact head b468accb8a1db0f268b0c44f65e8f4bbb16e95e0. RED 92f7eb41… found returned-UUID aliasing in tuple-backed authentication principals; People/Job Analysis fixes 64deb92f… / b468accb… store validated UUID integers and reconstruct fresh values on access. #64 remains the generic mutation command/result owner; do not copy #65 source or treat its mutable head as a released dependency.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Please review exact head d9cc516d54b4642f59fe126c331a19945fdf75f1, especially the Employment-separation docs-to-code reconciliation, preserved published authorization-header contract, deterministic manifest reseals, and the adopted CHANGELOG provenance delta. Treat #311 specialized PostgreSQL acceptance and central Security/CodeQL control-plane failures as separate owner-path evidence rather than substituting predecessor results.

@coderabbitai

coderabbitai Bot commented Sep 13, 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

repo="ContextualWisdomLab/Orgmetra"
head="d9cc516d54b4642f59fe126c331a19945fdf75f1"

echo '== Exact revision and pull request state =='
printf 'checked_out='; git rev-parse HEAD
git cat-file -e "${head}^{commit}"
gh pr view 64 --repo "$repo" \
  --json number,state,isDraft,headRefOid,baseRefName,baseRefOid,mergeable,url

echo '== Exact-head scope and whitespace =='
git show --no-patch --format='commit %H%nparents %P%nsubject %s' "$head"
git diff-tree --no-commit-id --name-status -r "$head"
git diff --check "${head}^" "$head"
git diff --stat "${head}^" "$head"
git diff --unified=160 "${head}^" "$head"

echo '== Locate canonical documents, API surface, traceability, and manifest =='
fd -t f . docs services database schemas \
  | rg -i '(^|/)(api_contract|data_model|erd|uml|prd|trd|changelog|manifest|openapi|employment-separation|0015).*|separation.*employment|employment.*separation' \
  | sort

echo '== Canonical documentation and changed-file contents =='
for file in $(git diff --name-only "${head}^" "$head"); do
  case "$file" in
    *.md|*.yaml|*.yml|*.json)
      echo "== $file =="
      cat -n "$file"
      ;;
  esac
done

echo '== Production separation contract and published authorization-header contract =='
rg -n -C 14 -i \
  '(separate_employment|employment.separation|employment separation|separation_reason_code|voluntary_resignation|retirement_transition|fixed_term_completion|position_elimination|employer_initiated_separation|authorization|authorization-header|x-.*authorization|bearer|header)' \
  services/people-api/src services/people-api/openapi schemas database/migrations docs \
  -g '*.py' -g '*.yaml' -g '*.yml' -g '*.sql' -g '*.md' 2>/dev/null || true

echo '== Rehire, hosted PostgreSQL acceptance, and Foundation claims in canonical docs =='
rg -n -C 10 -i \
  '(rehire|formerworker|rehirecandidate|hosted.*postgres|postgres.*acceptance|foundation|implemented|shipped|awaiting|planned|`#311`)' \
  docs CHANGELOG.md \
  -g '*.md' 2>/dev/null || true

echo '== Manifest validation and deterministic inventory =='
python3 - <<'PY'
import hashlib
import json
from pathlib import Path

manifest = json.loads(Path("manifest.json").read_text())
entries = manifest.get("files", [])
print(f"manifest_entries={len(entries)}")
for entry in entries:
    path = entry.get("path")
    if path in {
        "CHANGELOG.md",
        "docs/API_CONTRACT.md",
        "docs/DATA_MODEL.md",
        "docs/ERD.md",
        "docs/UML.md",
        "docs/PRD.md",
        "docs/TRD.md",
        "docs/traceability/employment-separation.md",
        "docs/adr/0015-governed-employment-separation-transition.md",
    }:
        p = Path(path)
        actual = hashlib.sha256(p.read_bytes()).hexdigest() if p.exists() else None
        print(json.dumps({
            "path": path,
            "manifest_sha256": entry.get("sha256"),
            "actual_sha256": actual,
            "manifest_bytes": entry.get("bytes"),
            "actual_bytes": p.stat().st_size if p.exists() else None,
            "manifest_lines": entry.get("lines"),
            "actual_lines": len(p.read_text().splitlines()) if p.exists() else None,
        }, sort_keys=True))
PY

echo '== CHANGELOG provenance delta and history =='
git diff --unified=100 "${head}^" "$head" -- CHANGELOG.md manifest.json
rg -n -C 8 -i \
  '(employment separation|separation|provenance|authorization|rehire|postgresql|foundation)' \
  CHANGELOG.md

echo '== Exact-head checks and reviews =='
gh api "repos/${repo}/commits/${head}/check-runs?per_page=100" \
  --jq '.check_runs[] | "\(.name)\t\(.status)\t\(.conclusion // "null")\t\(.details_url)"' || true
gh pr view 64 --repo "$repo" --json reviews \
  --jq '.reviews[] | "\(.author.login)\t\(.state)\t\(.commit.oid)"' || true

Length of output: 204272


🏁 Script executed:

#!/bin/bash
set -euo pipefail

head="d9cc516d54b4642f59fe126c331a19945fdf75f1"

echo '== Revision and changed paths =='
git rev-parse HEAD
git show --no-patch --format='commit %H%nparents %P%nsubject %s' "$head"
git diff-tree --no-commit-id --name-status -r "$head"
echo '== Cumulative paths from documented predecessor =='
git diff --name-status "1a094cbe78422a9c31812620c1b17484059dc123" "$head"

echo '== Exact head diff by target document =='
git diff --unified=80 "${head}^" "$head" -- \
  docs/API_CONTRACT.md docs/DATA_MODEL.md docs/ERD.md docs/UML.md docs/PRD.md docs/TRD.md \
  docs/traceability/employment-separation.md CHANGELOG.md manifest.json schemas/openapi.yaml

echo '== Authorization headers: OpenAPI operation vs canonical API contract =='
rg -n -A100 -B15 \
  '(/v1/employment-separations|EmploymentSeparation|employment-separation)' \
  schemas/openapi.yaml docs/API_CONTRACT.md docs/SECURITY.md \
  -g '*.yaml' -g '*.md'
rg -n -C 5 \
  '(X-Tenant-Reference|X-Actor-Reference|X-Purpose-Code|Authorization|Idempotency-Key)' \
  schemas/openapi.yaml docs/API_CONTRACT.md docs/SECURITY.md \
  -g '*.yaml' -g '*.md'

echo '== Explicit manifest entry names and exact-manifest completeness =='
jq -r '.files[].path' manifest.json | sort
echo '== canonical docs absent from manifest =='
for p in \
  docs/API_CONTRACT.md docs/DATA_MODEL.md docs/ERD.md docs/UML.md docs/PRD.md docs/TRD.md \
  docs/traceability/employment-separation.md docs/adr/0015-governed-employment-separation-transition.md \
  schemas/openapi.yaml CHANGELOG.md; do
  jq -e --arg p "$p" '.files[] | select(.path == $p)' manifest.json >/dev/null \
    && echo "present $p" || echo "absent $p"
done

echo '== Canonical docs final separation sections =='
for p in docs/API_CONTRACT.md docs/DATA_MODEL.md docs/ERD.md docs/UML.md docs/PRD.md docs/TRD.md; do
  echo "== $p =="
  rg -n -C 8 -i \
    '(employment.separation|employment separation|separation_reason_code|rehire|authorization|header|`#311`|hosted|postgresql)' "$p" || true
done

echo '== Changelog exact new active-PR entry and protected provenance =='
sed -n '1,90p' CHANGELOG.md

Length of output: 123713


@seonghobae I found one documentation consistency defect on exact head d9cc516d54b4642f59fe126c331a19945fdf75f1.

Medium — State the required authorization headers for Employment separation in the canonical API contract.

schemas/openapi.yaml Lines 191-195 requires these headers for POST /v1/employment-separations:

  • Idempotency-Key
  • X-Tenant-Reference
  • X-Actor-Reference
  • X-Purpose-Code

However, docs/API_CONTRACT.md Line 32 lists X-Tenant-Reference, X-Actor-Reference, and X-Purpose-Code only for “Employment, position, assignment, person, job-profile, and selection-decision commands.” The list does not explicitly include Employment separation. The Employment-separation section at Lines 46-62 also does not state these header requirements.

Add Employment separation to the shared-header statement, or state the four required headers directly in the Employment-separation section. This change keeps the canonical document aligned with the published OpenAPI operation and prevents a client from treating the route as requiring only body-level tenant, actor, and purpose data.

The docs otherwise reconcile the separation model correctly. They define the five controlled reason values, mark rehire #302 as planned, and state that the active PR is not protected or released truth. The inspected manifest entries match their SHA-256, byte-count, and line-count values. The CHANGELOG entry also correctly excludes #311 PostgreSQL acceptance and remaining security/review gates.

I treated #311 PostgreSQL acceptance and the separate Security/CodeQL control-plane status as independent evidence. I did not transfer predecessor results or infer approval.

You are interacting with an AI system.

Copy link
Copy Markdown
Contributor Author

Descendant performance receipt currentized: #317 is now exact 9ee37da8ed5756844f0eebf667e2332053f0b90d on this exact #64 base c0ba482c57a77820128f259b4a43c06df643c0f3, still Draft/open/mergeable. The descendant superseded ambient/archive k6 provenance with upstream ghcr.io/grafana/k6 2.2.0 pinned by package digest sha256:9bd01d6941fca969cb61bb57d2da5ee9b385fe2aa8881df3798c196564d6ace6; result/runtime evidence are bound to the same exact OCI identity. Exact-head CodeRabbit review reports no remaining source-level substituted-runner or post-run false-GREEN path in that boundary. This does not change #64 source GREEN, does not supply #311 PostgreSQL admission, and does not claim a measured p95 or release.

seonghobae commented Sep 13, 2026

Copy link
Copy Markdown
Contributor Author

Fresh required-workflow/current-authority receipt for exact #64 head c0ba482c57a77820128f259b4a43c06df643c0f3: Noema 34747212207 is terminal SUCCESS. Its exact-head noema-review job 103697391329 completed successfully after contextual-orchestrator sidecar provisioning and verdict preparation. The PR body's older statement that Noema is still provisioning is stale; a body currentization attempt again returned HTTP 502, so this comment is the durable correction.

Strix 34747212212 remains separately non-terminal and must not inherit Noema's verdict. Admission/materialization/sidecar provisioning/Strix installation are complete; job 103697332156 is still at Run Strix (quick). Elapsed time is not treated as timeout or a security verdict.

Descendant #317 remains Draft/open/mergeable on this exact #64 base at 9ee37da8ed5756844f0eebf667e2332053f0b90d. Its OCI-pinned k6 provenance repair does not alter #64 source acceptance or create a measured performance claim. Grafana's public GitHub Packages listing independently confirms the pinned ghcr.io/grafana/k6 2.2.0 digest sha256:9bd01d6941fca969cb61bb57d2da5ee9b385fe2aa8881df3798c196564d6ace6.

Copy link
Copy Markdown
Contributor Author

Descendant performance authority update only; #64 source head remains unchanged at c0ba482c57a77820128f259b4a43c06df643c0f3.

#317 has advanced ordinary-forward to exact 2ded2f0cdac52d0db5f481b4c97c118df8c9057c on this same #64 base. Fresh review found a post-run evidence defect in the predecessor benchmark wrapper: direct writes to a caller-visible summary path allowed a prior valid result to remain visible when a rerun failed, creating a stale-result false-GREEN path for downstream acceptance. Test-first 4b256d93... added the fresh-only publication contract; 872c1d4b... rejects pre-existing destinations, stages k6 output privately, validates one non-empty regular result after successful k6 exit, and publishes with a no-clobber hard link; 2ded2f0... aligns the regression with the final design. Source-equivalent wrapper validation is bash -n PASS plus an executable fake-Podman probe covering stale-target fail-closed, fresh-only publication, and staging cleanup.

This does not change People production semantics and does not create buyer-performance evidence. No hosted exact-head k6 execution or measured p50/p95/p99/max is claimed; #316 remains open. #64 remains Draft and this descendant evidence does not alter its central Dependency Review/CodeQL or independent-approval boundaries.

Copy link
Copy Markdown
Contributor Author

Descendant authority follow-up: #317 is now exact 38c6ee346bc21416a48c287facf0d72fd667caa8 on unchanged #64 base c0ba482c57a77820128f259b4a43c06df643c0f3. After the fresh-summary staging repair, upstream k6 v2.2.0 image authority was checked and its Dockerfile declares USER 12345. Rootless Podman does not automatically map the invoking host owner to that image UID, so private host-owned fixture/staging paths were not a reliable executable boundary. Test-first 02922a31...; repair 38c6ee34... verifies the pinned image's configured UID and runs with explicit non-root 12345:12345 plus --userns=keep-id:uid=12345,gid=12345. Source-equivalent probe covers image-user inspection, owner mapping, stale-result fail-closed, fresh publication, and staging cleanup. No People source semantics, #64 gate status, protected truth, or buyer p95 claim changes.

Copy link
Copy Markdown
Contributor Author

Descendant authority follow-up only; #64 source remains exact c0ba482c57a77820128f259b4a43c06df643c0f3. #317 is now exact 44dedef4412ac0c49e3f8facda25a0b85f3a9af3 on this same base after repairing CodeRabbit’s P1 same-owner summary-publication race. The descendant now binds staged source device/inode/size + SHA-256 before publication and requires unchanged/equal source+target identity/digest after the no-clobber hard link; mismatch removes the published target and fails. No People semantic delta, #64 gate-status change, buyer p95 evidence, protected integration, or release claim follows from this descendant repair.

Copy link
Copy Markdown
Contributor Author

Descendant authority update for the active People owner: stacked performance PR #317 is now exact 2ba21d88aa3c9837fa08d54554d2e94edf04b6f6 on this unchanged #64 head c0ba482c57a77820128f259b4a43c06df643c0f3. Its latest ordinary-forward work binds staged summary device/inode/size and SHA-256 across publication and executes a replacement-at-ln regression that fails closed and leaves no published artifact. #317's PR body and #316 receipt have been currentized to this exact head.

This does not alter People production semantics or #64 gate evidence and is not buyer-performance GREEN. Exact #317 still has no hosted check run or production-equivalent k6 p50/p95/p99/max evidence.

Copy link
Copy Markdown
Contributor Author

Descendant authority update: stacked performance PR #317 is now exact 108f1c0ee70eebfb0fa7d391aecb49a7927d912d on this unchanged #64 head c0ba482c57a77820128f259b4a43c06df643c0f3. A fresh CodeRabbit P1 on predecessor 2ba21d88... showed that a caller-owned summary pathname could change after final hash capture and before later acceptance. #317 now moves the durable handoff to content identity: the runner emits the verified SHA-256 token, and the acceptance CLI must re-hash the bytes it consumes against that token before validating runtime/result evidence. The exact-head regression substitutes the result bytes after the runner digest and requires fail-closed rejection.

This changes only performance-evidence mechanics. It does not alter People production semantics, #64 gate evidence, or establish buyer-performance GREEN.

Copy link
Copy Markdown
Contributor Author

Descendant authority update: performance PR #317 is now exact b6968520ef191fe8a3fd84d3cd5d4dc23a778281 on unchanged People head c0ba482c57a77820128f259b4a43c06df643c0f3.

A fresh CodeRabbit P1 invalidated #317's predecessor claim that a locally emitted result digest was a durable handoff: a caller could replace result bytes, recompute the digest, and construct matching runtime evidence. #317 now fails commercial acceptance closed before local result/runtime/fixture/digest evidence can become a receipt, and the benchmark digest is explicitly structural evidence only. Central authenticated owner path .github#2162 now owns cross-repository performance-evidence attestation; .github#1228 is an explicit prerequisite warning for reusable-workflow source identity.

This changes only descendant performance-evidence mechanics. It does not change Employment separation semantics or any #64 gate result, and it establishes no p95 GREEN.

Copy link
Copy Markdown
Contributor Author

Descendant performance authority currentization: #317 is now exact 0201f5d94ac1d491a1d7292eddf6d506f54bde15, still stacked on this exact #64 head c0ba482c57a77820128f259b4a43c06df643c0f3.

CodeRabbit found a second commercial-evidence P1 on #317 predecessor b6968520...: the CLI was fail-closed, but the exported local validator still returned { accepted: true }, allowing an importer to bypass the CLI and obtain a commercial-acceptance-shaped object from caller-consistent evidence. #317 repaired this ordinary-forward (6e30f0a... RED → 3dec98a... structural-only return → e680e02... / 0201f5d... contract reconciliation). The local validator now returns structurally_valid: true and no accepted key.

Central positive authority remains .github#2162; its implementation #2166 and prerequisite #2164 are still mutable Draft stack, so #317 remains fail-closed and no p95/protected/release claim transfers to #64.

Copy link
Copy Markdown
Contributor Author

Descendant/central authority receipt update: #317 itself remains exact 9b1b116f0d937bee0afcc6646b140edd09f11d8a on this #64 head. Its central prerequisite .github#2164 has now been ordinary-forward reconciled with protected .github/main@828eaaefb0cc97bba4da63eb9270447476d26710 at exact 834d5163cb306a540a9064931a2694a730b9cd3f; .github#2166 has been non-force restacked on that parent at exact ddd92ee491c8805c33bf5b2bfd608c2c492bcb26. Both remain Draft with newly regenerated exact-head checks queued/pending, so no predecessor verdict transfers and no mutable central head is consumed as authority. Existing #64 gates and buyer-performance nonclaims remain unchanged.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant