Repository navigation
feat(factory): enforce local contribution hooks - #205
Merged
Merged
Conversation
yshyn-iohk
force-pushed
the
feat/issue-200
branch
from
August 29, 2026 13:04
ce685bc to
2808472
Compare
Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io>
yshyn-iohk
force-pushed
the
feat/issue-200
branch
from
August 30, 2026 06:30
2808472 to
13909ea
Compare
Contributor
Author
|
Factory closeout for exact head 13909ea
Ready for review and exact-head integration delivery. |
yshyn-iohk
marked this pull request as ready for review
August 30, 2026 06:50
yshyn-iohk
added a commit
that referenced
this pull request
Sep 3, 2026
…ortal * test(openid4vci): gate LaceID Portal contracts Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * docs(openid4vci): record LaceID Portal interop gate Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(openid4vci): pin fixture source paths Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * feat(openid4vci): add strict Portal adapter Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * refactor(openid4vci): split Portal internal tests Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * feat(openid4vci): compose Portal headless issuance Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(test): bind Portal evidence to Oxid head Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(openid4vci): zeroize streamed Portal responses Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(openid4vci): wipe partial Portal responses Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(docs): keep integration ADR links resolvable Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * ci: enforce integration delivery authority (#152) * ci: enforce integration delivery authority Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(ci): harden integration base enforcement Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(ci): close review contract gaps Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(ci): make required contexts fail closed Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(ci): document cross-base enforcement boundary Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(ci): close delivery review gaps Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(ci): harden delivery follow-up policy Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(ci): close current-head delivery findings Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(ci): preserve delivery security controls Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * docs(ci): align delivery contract wording Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> --------- Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): stabilize repository dev loop (#153) * fix(harness): stabilize repository dev loop Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): harden review preflight Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): bind review and closing facts Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): isolate untrusted review input Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): validate effective runtime contracts Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): close current-head stability findings Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): harden stability review contracts Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix: close dev-loop review contract gaps Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix: harden dev-loop preflight contracts Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(dev-loop): harden review and REST contracts Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> --------- Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * ci(deps): Bump github/codeql-action/upload-sarif from 4.37.6 to 4.37.7 in the github-actions group across 1 directory (#138) ci(deps): Bump github/codeql-action/upload-sarif Bumps the github-actions group with 1 update in the / directory: [github/codeql-action/upload-sarif](https://github.com/github/codeql-action). Updates `github/codeql-action/upload-sarif` from 4.37.6 to 4.37.7 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](github/codeql-action@5595cca...ff2f1c6) --- updated-dependencies: - dependency-name: github/codeql-action/upload-sarif dependency-version: 4.37.7 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * docs: establish the Rust monorepo quality constitution (#159) * docs: establish quality constitution Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * docs: correct quality evidence claims Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> --------- Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * docs(architecture): govern capability façade decomposition (#160) * docs(adr): govern capability facade decomposition Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * docs(adr): close facade policy review gaps Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * docs(site): regenerate ADR catalog Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(docs): keep ADR-0104 catalog link resolvable Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(docs): pin catalog link to published head Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * docs(adr): close exact-head review findings Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * docs(adr): clarify ratchet and catalog lifecycle Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(docs): validate candidate integration links locally Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(docs): harden candidate link validation Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * docs(ci): document candidate link substitution Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(docs): anchor candidate URL remapping Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(docs): prove exact remap scope Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(docs): run wrappers through resolved paths Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(docs): align candidate parsing with Lychee Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(docs): scope local remapping to pull requests Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(docs): bind candidate and integration modes Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(docs): preserve Lychee defaults Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> --------- Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * ci(harness): stage impact-aware assurance gates (#165) * fix(harness): close dev-loop stability regressions Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): enforce truthful dev-loop preflight Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): normalize handoff envelope cwd Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): reject malformed handoff topology Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): resolve nested pinned core Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(harness): make envelope fixtures hermetic Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * ci(harness): right-size development gates Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * ci(harness): stage change-aware assurance gates Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * ci(harness): enforce fast hosted shell budgets Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * ci(harness): declare minimal shell search dependency Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * ci(rust): make workspace compilation cacheable Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * ci(cache): eliminate hosted write storms Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * ci(cache): seed only from trusted integration Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * ci(ui): budget the cold cache fallback Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> --------- Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * feat(adapter): complete Portal Android issuance (#154) * feat(identity): complete Portal Android issuance Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(mobile): stage Portal capability privately Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(mobile): report sanitized Portal failures Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(mobile): diagnose Portal handoff state Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(mobile): accept stripped Portal offer route Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(ci): address hosted validation failures Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(ci): use compatible Opengrep annotations Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(ci): configure private WebSocket transport Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): close physical review gaps Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(portal): fail loudly on Android build errors Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(portal): sanitize Android build diagnostics Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(portal): redact failed build tail Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(app): coerce typed startup failures Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(portal): model transport unavailability exactly Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(portal): assert closed unavailable UI state Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(portal): prove payload-free terminal failures Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(portal): observe scrubbed terminal failure Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(portal): pin observed unavailable attempts Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(portal): synchronize injected transport faults Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(portal): assert locked issue-error state safely Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(portal): pin issue-error request count Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(portal): observe explicit review escape Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): resolve exact-head review findings Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): close follow-up review gaps Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): bind simulator and provenance claims Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): make mobile acceptance reproducible Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): attest physical handoff cleanup Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(portal): prove trigger reservation reuse Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(android): add owned exact-sequence AVD harness Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(android): gate AVD cleanup on ownership Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(android): harden exact-sequence supervision Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(android): preserve exact-sequence ownership proofs Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(android): make AVD ownership proof portable Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> --------- Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * chore(harness): guard integration auto-merge (#169) chore(factory): guard integration auto-merge Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): reuse common Pi packages in smoke (#172) Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): require registered Pi worktree topology (#174) Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(deps): update chacha20 to 0.10.2 (#178) Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): share Pi package store (#179) Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * feat(harness): add supervisor metrics audit (#180) Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): disable consumer worktree provisioning (#182) Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): close preflight environment boundary (#184) Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): bind main envelopes to targets (#186) Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): allow unavailable review telemetry (#188) fix(factory): allow unavailable review telemetry Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): recognize squash-merged worktrees (#190) Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * feat(composition): prove Lace Portal issuance with local sync (#201) * feat(headless): prove local issuance and indexer sync Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(headless): exercise Lace portal integration Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(headless): keep portal evidence runnable after merge Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(headless): preserve indexed sync height provenance Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(headless): validate renamed portal evidence field Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(headless): keep tip observation fail soft Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(headless): prove websocket sync behind compile gate Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(headless): prove portal store path wiring Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> --------- Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * feat(ci): enforce contribution provenance (#203) feat(factory): enforce contribution provenance Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(ci): grant classifier pull-request permission (#212) Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * ci(factory): keep contribution feedback non-blocking (#216) * ci(factory): keep contribution feedback non-blocking Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): honor the CI-free draft gate Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * docs(harness): document draft gate precedence Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> --------- Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): align Pi runtime policy (#204) * fix(harness): align Pi runtime policy Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): unblock factory startup Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): resolve review findings Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): harden recovery contracts Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): simplify admission recovery Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(harness): allow absent CI package store Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> --------- Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * feat(factory): enforce local contribution hooks (#205) Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * feat(portal): add desktop-first macOS issuance lane (#211) * feat(ui): add ARM64 Darwin desktop Portal test Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(ui): harden desktop Portal harness cleanup Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(ui): retain desktop test driver task Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): initialize desktop wait deadline safely Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(ui): start rendered desktop driver after mount Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): classify desktop driver startup failures Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(composition): admit exact desktop Portal bundle Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(ui): await rendered desktop driver stages Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(ui): retain desktop driver across profile routes Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): capture desktop without accessibility Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): select the native Xcode SDK Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(test): complete desktop Portal evidence Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(portal): add canonical macOS laptop lane Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): fail closed on ownership query Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): invalidate stale ownership state Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): keep cleanup authority process-local Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): prove native screenshot redaction Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> --------- Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * feat(portal): prove Android and iOS simulator issuance (#220) * test(portal): add virtual mobile simulator lane Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): preserve failed mobile diagnostics Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): detach archived mobile builds Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): create the iOS test project directory Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): handle iOS custom-scheme confirmation Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): use stable iOS custody selector Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): pass iOS issue failure phase Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): bind counters to platform transport Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): stabilize simulator process ownership Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> --------- Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * feat(harness): add bounded delivery profiles (#229) Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): bound Claude review effort (#233) * fix(harness): bound Claude review effort Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): bind review effort evidence Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): prevent effort evidence downgrade Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): harden bounded review evidence Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): close review capability gaps Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): attest explicit effort capabilities Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): tolerate installed effort subsets Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): require unambiguous effort capability Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): enforce review effort SLA Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): harden effort capability evidence Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): stabilize effort help parsing Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): finalize bounded review contract Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): consolidate review resource policy Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): close review parser edge cases Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): align help capability probes Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): bind high-risk review floor Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): expose attestation effort policy Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): harden attestation entry binding Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): close review capability gaps Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): bind review resource migrations Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): stabilize review migration contract Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): bind minimum review budget Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): close attestation symmetry gaps Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): bind attestation floors exactly Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): reject coerced review budgets Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): preserve sub-dollar review canaries Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): admit bounded sub-dollar budgets Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): align integration review gates Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> --------- Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * refactor(headless): extract capability handlers (#231) * test(headless): characterize public protocol contract Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> (cherry picked from commit 4a3fe312a6ad2ba3d5f2e2e07be099076538a7e1) * refactor(headless): extract wallet profile capability Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> (cherry picked from commit cf5b7b6029c6755607599b267d2de8bbac0256b0) * fix(architecture): measure façade ratchets from index blobs Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> (cherry picked from commit d0718d24511a2e13ddf2c5cc2ef50e3072ae8b05) * test(headless): characterize response flushing Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> (cherry picked from commit 924b002e24b491cbf387c44652a6f99a814a01d3) * fix(architecture): ignore Git replacement objects Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> (cherry picked from commit 7d700ee06f28c890a8cba94e390f6313c4213a2e) * fix(architecture): align façade ratchets with integration Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * refactor(headless): extract capability handlers Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(ci): own headless protocol contract target Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * refactor(headless): bound protocol facade Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * refactor(headless): separate wire and test responsibilities Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(headless): keep routing fail closed Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(headless): harden refactor evidence Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> --------- Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * refactor(ui): extract diagnostics and passport vault capabilities (#236) * test(ui): characterize public facade paths Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> (cherry picked from commit b05834e6af8d5859805190a48a84b6446e872d37) Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * refactor(ui): extract diagnostics capability Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> (cherry picked from commit b16eb514185cfa370fcb1e399694438b172c1aa5) Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(ui): cover diagnostics behavior Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> (cherry picked from commit 53a6fb1f8ac777a85acf858ca49b08cc31233cf5) Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(ui): cover diagnostics bridge failures Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> (cherry picked from commit 94b4bf4f48008d100580f3e9de74b69d4b4cc5a9) Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(ui): scan extracted modules Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * refactor(ui): extract passport vault capability Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(architecture): ratchet UI facade ownership Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> --------- Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * refactor(architecture): generate opaque identifier wrappers (#237) * feat(architecture): add opaque identifier macro Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * refactor(architecture): generate opaque identifier wrappers Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> --------- Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * refactor(composition): decompose capability facade (#239) Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * feat: prove issuance on mobile simulators (#238) * feat(harness): add bounded delivery profiles Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(portal): add virtual mobile simulator lane Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): preserve failed mobile diagnostics Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): detach archived mobile builds Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): create the iOS test project directory Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): handle iOS custom-scheme confirmation Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): use stable iOS custody selector Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): pass iOS issue failure phase Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): bind counters to platform transport Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): retain Android QEMU ownership Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): bind Android counters to replay-free transport Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): budget Android APK installation Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): deliver warm Android offers single-top Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): admit redacted restart screenshots Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): retain restart driver stage Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): redact restart credential facts Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * style(ui): format restart driver contract Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): target warm Android ingress Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): use pinned consumer image tags Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): await Android failed issuance cleanup Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): report Android harness aborts Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): accept Android issued-record completion Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(portal): report bounded Android issue state Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(portal): classify Android issue failures Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): await Android issued inventory Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): label unreported Android aborts Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): classify Android issuance diagnostics Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): reject Android clock drift Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): label Android journey deadline phases Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): report Android supervisor failures Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): receipt Android reverse mappings Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): accept CRLF Android reverse receipts Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): stabilize unavailable Android protocol failures Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * feat(portal): add Portal E2E Pi skill Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * feat(portal): add Tailnet manual demo lifecycle Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): keep browser issuance on one Tailnet origin Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(ui): clarify identity and credential actions Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): preserve Tailnet mock request path Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): record pending browser navigation Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): render terminal protocol errors Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): accept scoped Android reverse listings Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * docs(factory): define AI resource hygiene policy Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(protocol): allow failed offer discard Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * feat(portal): add explicit holder bootstrap Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * refactor(ui): extract DID capability page Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(headless): map DID publication failures Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> --------- Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): make mobile issuance visibly terminal (#242) * fix(portal): pin redeemed offer lifecycle Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(factory): validate holder bootstrap receipt Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(portal): honor Android issuance consent touch Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(credential): close issuance review after acceptance Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> --------- Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * feat(wallet): show public standalone balances (#246) * feat(wallet): show public standalone balances Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(composition): keep standalone ownership bounded Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(harness): avoid false positive in release scan Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(wallet): address current-head review findings Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(wallet): use typed standalone fixture custody Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(wallet): expose public fixture authority Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(wallet): bind public fixture to named profile Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(wallet): scope fixture ambiguity Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(wallet): harden fixture composition Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(wallet): require explicit fixture opt-in Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(wallet): close fixture review gaps Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * docs(wallet): clarify fixture authority boundary Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(ci): model release feature edges exactly Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(ci): normalize release feature evidence Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(wallet): exercise fixture features in CI Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> --------- Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * ci(ci): reserve setup and cleanup time for unit jobs (#250) * ci(ci): reserve time for job cleanup Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * docs(factory): distinguish unit job reserve Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> --------- Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * feat(wallet): recover owner PreProd wallet root (#248) * feat(wallet): recover owner PreProd wallet root Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * refactor(ui): extract wallet recovery surfaces Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(wallet): preserve installed root recovery state Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> --------- Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * feat(platform): expose standalone deployment readiness (#252) Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * ci(test): enforce critical coverage evidence (#247) * test(identity): cover DID lifecycle failures Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(identity): tighten lifecycle forwarding coverage Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(credential): cover fail-closed persistence paths Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(protocol): cover terminal issuance failures Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * ci(test): add source-bound serial coverage harness Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * ci(test): evaluate critical coverage scopes Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(test): omit dependency sources from coverage evidence Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(test): parse zero-context coverage diffs Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(ci): bind coverage to pull request base Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> --------- Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(platform): initialize Android TLS before issuance (#254) * fix(platform): initialize TLS before credential issuance Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(test): support macOS Bash in Portal stack Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(ci): honor plain-test coverage exclusions Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(test): remove timeout marker race Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * test(ui): cover Android startup transitions Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> --------- Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * docs(factory): add a Tailnet identity and Midnight demo kit (#256) * docs(portal): add Tailnet mobile demo kit Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * docs(factory): generalize Tailnet identity kit Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> --------- Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * build(platform): split app build and deploy commands (#257) Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(ci): make promotion evidence accurate (#260) * fix(ci): make promotion evidence accurate Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * docs(ci): document feature-gated coverage closure Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> --------- Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(ci): close promotion coverage mappings (#263) * fix(ci): cover development wallet fixture Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(ci): classify Rust test modules Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(ci): classify non-executable coverage facade Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> * fix(ci): instrument promotion-only features Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> --------- Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> --------- Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add repository-scoped local Git hooks that reject invalid contribution evidence before publication. Normal commits require OpenPGP signing configuration, commit messages must satisfy the Conventional Commit and exact DCO contract, and outgoing issue-branch ranges are cryptographically verified before Git transfers objects.
Scope and context
This issue-backed contribution-hooks PR is rebuilt as one signed commit on the current
integrationbranch after its dependency PRs merged. The exact current head is13909ea39b623b0f2bc08c3d63cc03949fdcc3ef. The hooks are installed as a complete version-checked bundle in Git-common private state; all linked worktrees share the stable bundle without loading scripts from another active worktree.Acceptance criteria
pre-commit,commit-msg, andpre-pushdispatchers.pre-commitwhen signing is disabled, the format is not OpenPGP, or identity/key selection is absent.HEAD, ignore deletions, and fail closed without an integration base.Definition of done
./bootstrap.sh --configure-gitinstalls a private stable bundle and refuses another hook manager.git commit -sis signed by the repository-local default and fails on invalid message/DCO evidence../bootstrap.sh --checkvalidates both Pi and local hooks.Non-goals
AC/DoD/non-goals matrix
Validation commands
node --test tests/repository/local-git-hooks-contract.test.mjs— passed.node --test tests/repository/contribution-policy-contract.test.mjs— passed../run.sh repository --strict— passed../bootstrap.sh --check— Pi and hook installation passed.node scripts/dev-loops.mjs gates— passed.pre-pushvalidation againstorigin/integration..HEAD— passed for the one signed commit during publication../scripts/check-dco.sh origin/integration HEAD— passed for the one-commit exact range.Security and privacy
The installer writes only repository-local Git config and private Git-common hook state. It refuses a foreign
core.hooksPath; it never reads or generates signing keys. The installed policy bundle is content-checked to avoid cross-worktree drift. Hooks remain bypassable local feedback, while GitHub's trusted exact-head OpenPGP gate remains authoritative.Submission checklist
Closes #200