Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
e326397
feat(contract): publish portable PCC fixture
saagpatel Aug 3, 2026
3d16ed6
fix: align contract fixture envelopes
saagpatel Aug 3, 2026
1092128
fix(contract): validate portable producer envelope
saagpatel Aug 4, 2026
547e6e4
fix(demo): refresh canonical truth fixtures
saagpatel Aug 4, 2026
a1e4d3c
fix(contract): fully validate fixture snapshots
saagpatel Aug 4, 2026
b73b9e1
fix(contract): verify serialized fixture fidelity
saagpatel Aug 4, 2026
dc8dddb
fix(demo): align canonical security risk count
saagpatel Aug 4, 2026
c20bddf
fix(demo): make stale receipt age canonical
saagpatel Aug 4, 2026
88b89ca
fix(contract): preserve stale provider envelopes
saagpatel Aug 4, 2026
bfdaab7
fix(contract): validate provider and category semantics
saagpatel Aug 4, 2026
3cf2358
fix(contract): validate normalized evidence envelopes
saagpatel Aug 4, 2026
7c18a89
fix(contract): validate repository state fidelity
saagpatel Aug 4, 2026
3cb837c
fix(contract): honor evidence boundaries
saagpatel Aug 4, 2026
4b1694c
fix(contract): close residual validation gaps
saagpatel Aug 4, 2026
0d3c590
fix(contract): share producer coverage envelope
saagpatel Aug 4, 2026
26de385
fix(contract): bind portfolio metadata decisions
saagpatel Aug 4, 2026
eebd992
fix(contract): remove obsolete attention alias
saagpatel Aug 4, 2026
803f17a
Pin portable evidence reason domains
saagpatel Aug 4, 2026
260ca6e
Enforce producer evidence reachability
saagpatel Aug 4, 2026
34ab84b
fix: bind portable fixtures to production contracts
saagpatel Aug 4, 2026
2aefe3c
fix: preserve exact upstream branch identity
saagpatel Aug 4, 2026
9921337
fix: bind upstream displays to configured remotes
saagpatel Aug 4, 2026
ec69fbe
fix: stabilize portfolio publication clocks
saagpatel Aug 4, 2026
d3536eb
fix: bind live normalized security evidence
saagpatel Aug 4, 2026
624d18e
fix: order final publication revalidation
saagpatel Aug 4, 2026
5f841ef
fix: normalize unborn worktree heads
saagpatel Aug 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ jobs:
run: |
python -m pip install --upgrade pip
pip install -e ".[dev,serve,semantic]"
- name: Verify portable PortfolioTruth consumer contract
run: python scripts/generate_portfolio_truth_contract_fixture.py --check
- name: Run tests
run: python -m pytest tests/ -v --tb=short
- name: Lint with ruff
Expand Down
14 changes: 14 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ Treat campaign/writeback, GitHub Projects, Notion sync, catalog overrides, score
- Public-safe recording plan: [DEMO-PLAN.md](DEMO-PLAN.md)
- Product brief: [docs/product/operator-os-product-brief.md](docs/product/operator-os-product-brief.md)
- Public fixture proof package: [docs/demo-proof/public-fixture/README.md](docs/demo-proof/public-fixture/README.md)
- Portable PCC contract: [fixtures/contracts/portfolio-command-center-v1/manifest.json](fixtures/contracts/portfolio-command-center-v1/manifest.json)
- proof-pr dogfood: [docs/proof-pr-dogfood.md](docs/proof-pr-dogfood.md)
- Product modes: [docs/modes.md](docs/modes.md)
- Web UI operator guide: [docs/audit-serve.md](docs/audit-serve.md)
Expand Down Expand Up @@ -226,6 +227,19 @@ audit serve --output-dir output/demo
To record the Portfolio Command Center wedge from the same fixture, follow
[DEMO-PLAN.md](DEMO-PLAN.md) and point the desktop app at `output/demo/`.

The smaller PCC compatibility fixture is fixed-clock and deterministic. GHRA
owns its manifest, schema identity, generator, and digest; PCC pins the exact
producer commit separately so the artifact never needs a self-referential Git
hash. Because the synthetic fixture is not emitted by an attested producer
checkout, its canonical `producer` evidence is intentionally empty; partial or
invented producer evidence fails the same validation gate used for publication.
Regenerate or verify it with:

```bash
python scripts/generate_portfolio_truth_contract_fixture.py
python scripts/generate_portfolio_truth_contract_fixture.py --check
```

### Quick start (subcommand form)

```bash
Expand Down
32 changes: 32 additions & 0 deletions fixtures/contracts/portfolio-command-center-v1/manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"consumer": {
"compatibility_policy": "additive-0.x",
"repository": "saagpatel/PortfolioCommandCenter"
},
"contract_version": "ghra-pcc-portfolio-truth.v1",
"fixture": {
"additive_canary_paths": [
"contract_fixture",
"projects[0].additive_contract_canary"
],
"coverage_states": [
"complete",
"partial",
"stale",
"unknown"
],
"evaluation_time": "2026-08-01T06:00:00+00:00",
"generated_at": "2026-08-01T00:00:00+00:00",
"producer_evidence": "absent",
"project_count": 4,
"security_evidence_semantics": "synthetic-cross-receipt-state-matrix"
},
"portfolio_truth_schema_version": "0.11.0",
"producer": {
"artifact_path": "fixtures/contracts/portfolio-command-center-v1/portfolio-truth.json",
"artifact_sha256": "ba3000833f1cd9c89442948ebe51f7e405e7832333a69c6f7347fb2fbfae254a",
"generator": "src.portfolio_truth_contract_fixture:build_contract_fixture",
"manifest_path": "fixtures/contracts/portfolio-command-center-v1/manifest.json",
"repository": "saagpatel/GithubRepoAuditor"
}
}
Loading