flex-auth/workplans
tegwick 3081067325
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
Build and Publish Container Image / build-and-push (push) Successful in 1m24s
State tenant-engine's tenant relation in the write-api package, v3.
tenant-engine named the relation in TEN-DEC-2026-002: `tenant` is the target
tenant record and always equals `resource.id`; the write API is cross-tenant
by design and `tenant.guardrail.read` does not differ. v2 carried no tenant
rule and a constant fixture tenant, so the deliberate scope and an omitted
rule were indistinguishable.

tenant-engine.write-api.mutate v3 (FLEX-DEC-2026-016):
- allowed requires tenant_is_target; a mismatch or absent tenant is denied
  tenant_not_target (object.get, so an absent key names the right cause).
- the cross-tenant scope is stated in the package and quantified by
  test_tenant_never_changes_effect over every action, three subjects and
  four tenants, with guards against passing by denying everything.
- fixtures rotate tenant across four tenants; five cross-tenant allows and
  two tenant_not_target denies added (42 fixtures, 33 tests, all pass).
- user-engine's tenant:platform exclusion is named as a fixed-record rule,
  not a subject/tenant relation, and tested separately.

Closes FLEX-WP-0022 (T01, T02 done). Also records TEN-IN-0004 and
SECRETS-IN-0002 on FLEX-WP-0020 and acknowledges the GH-DEC-2026-017
replies on FLEX-WP-0030-T04.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 63291@bnt-lap001
Assistant-Session: 8bd77868-ca68-4f49-bb1e-d539ecc0d703
2026-09-21 07:39:57 +02:00
..
FLEX-WP-0001-repo-intent-and-architecture-baseline.md Normalize agent instructions and workplan frontmatter (STATE-WP-0067) 2026-06-22 23:16:25 +02:00
FLEX-WP-0002-standalone-policy-as-code-core.md Normalize agent instructions and workplan frontmatter (STATE-WP-0067) 2026-06-22 23:16:25 +02:00
FLEX-WP-0003-markitect-consumer-integration.md Normalize agent instructions and workplan frontmatter (STATE-WP-0067) 2026-06-22 23:16:25 +02:00
FLEX-WP-0004-delegated-pdp-and-directory-adapters.md Normalize agent instructions and workplan frontmatter (STATE-WP-0067) 2026-06-22 23:16:25 +02:00
FLEX-WP-0005-foundations-and-topaz-alignment.md Normalize agent instructions and workplan frontmatter (STATE-WP-0067) 2026-06-22 23:16:25 +02:00
FLEX-WP-0006-ops-warden-ssh-signing-policy-gate.md FLEX-WP-0006: implement ops-warden signing gate policy 2026-06-23 21:17:42 +02:00
FLEX-WP-0007-ops-warden-policy-gate-production-deployment.md Close ops-warden policy gate deployment 2026-06-30 00:52:56 +02:00
FLEX-WP-0008-tenant-engine-consumer-integration.md fix(workplans): adopt ADR-007 derived identifiers for unregistered records 2026-08-25 20:10:35 +02:00
FLEX-WP-0009-user-engine-production-policy-service.md fix(workplans): adopt ADR-007 derived identifiers for unregistered records 2026-08-25 20:10:35 +02:00
FLEX-WP-0010-tenant-lifecycle-policy-actions.md fix(workplans): adopt ADR-007 derived identifiers for unregistered records 2026-08-25 20:10:35 +02:00
FLEX-WP-0011-railiance-staged-promotion-overlay.md fix(workplans): adopt ADR-007 derived identifiers for unregistered records 2026-08-25 20:10:35 +02:00
FLEX-WP-0012-credential-grant-authorization-surface.md fix(workplans): adopt ADR-007 derived identifiers for unregistered records 2026-08-25 20:10:35 +02:00
FLEX-WP-0013-restore-seven-action-tenant-engine-pin.md fix(workplans): adopt ADR-007 derived identifiers for unregistered records 2026-08-25 20:10:35 +02:00
FLEX-WP-0014-tenant-guardrail-policy-actions.md fix(workplans): adopt ADR-007 derived identifiers for unregistered records 2026-08-25 20:10:35 +02:00
FLEX-WP-0015-tenancy-posture-conformance.md fix(workplans): adopt ADR-007 derived identifiers for unregistered records 2026-08-25 20:10:35 +02:00
FLEX-WP-0016-ops-warden-incluster-policy-pin.md fix(workplans): adopt ADR-007 derived identifiers for unregistered records 2026-08-25 20:10:35 +02:00
FLEX-WP-0017-action-bound-authorization-contract.md Finish FLEX-WP-0017 2026-09-01 20:21:58 +02:00
FLEX-WP-0018-inbound-auth-corrections.md chore(registrar): assign State Hub identifiers 2026-08-23 13:21:43 +02:00
FLEX-WP-0019-layer-model-conformance.md Finish FLEX-WP-0019 layer-model v0.7 conformance 2026-09-03 23:48:45 +02:00
FLEX-WP-0020-repository-identity-migration.md State tenant-engine's tenant relation in the write-api package, v3. 2026-09-21 07:39:57 +02:00
FLEX-WP-0021-secrets-engine-consumer-policy-gate.md fix: the address we published was a misdirection, and the channel is unauthenticated 2026-09-06 22:44:45 +02:00
FLEX-WP-0022-tenant-scope-coverage.md State tenant-engine's tenant relation in the write-api package, v3. 2026-09-21 07:39:57 +02:00
FLEX-WP-0023-operator-caller-access-path.md Record authenticated caller in the decision envelope. 2026-09-14 04:44:07 +02:00
FLEX-WP-0024-decision-envelope-authenticity.md Sign decision envelopes and close FLEX-WP-0024. 2026-09-14 09:57:50 +02:00
FLEX-WP-0025-fact-versus-assertion.md Make undeclared policy attribute reads a validate error. 2026-09-14 09:54:09 +02:00
FLEX-WP-0026-openrouter-native-contract.md Register OpenRouter native contract completion 2026-09-14 00:57:13 +02:00
FLEX-WP-0027-t03-human-review.md Classify open workplans with flavor (CUST-WP-0072). 2026-09-14 15:50:41 +02:00
FLEX-WP-0028-compact-sitting-review.md Admit the compact sitting review package on a dedicated pin. 2026-09-15 22:50:24 +02:00
FLEX-WP-0029-stance-register-second-edition.md chore: write back FLEX-WP-0029 hub IDs and refresh WORK-RECORDS.md 2026-09-20 23:56:46 +02:00
FLEX-WP-0030-boundary-declaration-cleanup.md State tenant-engine's tenant relation in the write-api package, v3. 2026-09-21 07:39:57 +02:00
FLEX-WP-0031-decision-record-emission.md chore: write back FLEX-WP-0030 T06-T08 and FLEX-WP-0031 hub IDs 2026-09-21 06:37:01 +02:00