|
428 | 428 | {"created_at":"2026-04-05T21:03:21.882085899Z","id":"axon-eef97bd6","issue_type":"task","labels":["helix","phase:review","kind:review","area:api"],"notes":"AR-2026-04-05: INCOMPLETE — gRPC + HTTP gateway + CLI + embedded API all SATISFIED. Server binary entry point (main.rs) missing. Go/TypeScript SDKs UNIMPLEMENTED. CLI missing schema/collection-describe/collection-drop subcommands. 7/9 AC satisfied.","parent":"axon-bfdb0301","priority":0,"status":"closed","title":"Review: API surfaces (HTTP/gRPC)","updated_at":"2026-04-05T21:22:54.434406579Z"} |
429 | 429 | {"created_at":"2026-04-12T20:55:43.706727764Z","id":"axon-f07c15fc","issue_type":"task","labels":["helix","phase:review","kind:review","area:core","area:transactions"],"parent":"axon-9c3732a3","priority":0,"status":"closed","title":"Review: core data model, audit, transactions, rollback","updated_at":"2026-04-12T20:59:29.729830222Z"} |
430 | 430 | {"acceptance":"DescribeCollectionResponse includes created_at and updated_at timestamps; timestamps survive process restart on SQLite backend","claimed-at":"2026-04-05T21:44:44Z","claimed-machine":"sindri","claimed-pid":"2443811","created_at":"2026-04-05T21:15:10.24655624Z","id":"axon-f0b25662","issue_type":"task","labels":["helix","phase:build","kind:execution","area:data-model"],"owner":"erik","priority":1,"spec-id":"FEAT-001","status":"closed","title":"Add created_at and updated_at timestamps to CollectionMetadata","updated_at":"2026-04-05T21:49:09.248067338Z"} |
431 | | -{"acceptance":"AC1. crates/axon-policy (or the policy explain crate) exposes a public function that takes a transaction fixture (list of ops) and returns per-step + aggregate explained outcomes for active and proposed policies.\nAC2. cargo test -p axon-policy passes for the new recursive-explain tests, including chained ops and at least one denied/needs_approval/conflict case per step shape.\nAC3. cargo test --workspace passes; cargo clippy --workspace -- -D warnings passes.\nAC4. The GraphQL or REST surface (whichever the impact matrix calls) exposes the new explained-transaction result; integration test in axon-server verifies the wire shape.\nAC5. Documented in docs/helix/01-frame/features/FEAT-031-*.md (or appended to it) with a one-paragraph note linking to the new public function.","created_at":"2026-05-09T02:30:50.406447146Z","description":"PROBLEM: The policy impact matrix at ui/src/routes/tenants/[tenant]/databases/[database]/policies/+page.svelte:1152, 1315-1320 renders a \"transaction delta unavailable\" affordance for transaction-row fixtures because the backend cannot explain transaction (multi-operation) flows. axon-ff92fed7 deliberately scoped this out and pointed to axon-84038791 as the follow-up; axon-84038791 cannot proceed without this backend prerequisite.\n\nCURRENT STATE:\n- Single-operation policy explain works (read|create|update|patch|delete fixture rows are evaluated for active and proposed policies).\n- No recursive transaction explain exists in the Rust crates: `grep -r \"transaction_explain\\|TransactionExplain\\|recursive.*explain\" crates/` returns no matches.\n- The UI surface that would consume the result is the impact matrix; the policy authoring page already accepts a transaction fixture textarea (policy-authoring.spec.ts:214 dry-run picker) but has no per-step explained-outcome rendering.\n\nPROPOSED FIX: Add a backend API (likely a GraphQL query or the existing policy-explain endpoint extended) that takes a transaction fixture (an ordered list of operations + subject snapshots) and returns:\n- per-operation explained outcome (allowed | needs_approval | denied | conflict) for both active and proposed policies\n- aggregate transaction outcome\n- redaction list and denied-field diffs per step\n- sufficient detail for the impact matrix to render the same active-vs-proposed delta as for entity rows\n\nImplementation lives in crates/axon-policy (or wherever policy explain is implemented today — verify by `grep -r \"PolicyExplain\\|explain_policy\" crates/`). Add unit tests around the recursion (chained ops where step 2 depends on step 1 result) and a workspace-level integration test.\n\nNON-SCOPE:\n- UI consumption (separate bead — transaction fixture editor + impact matrix transaction-row rendering, see axon-84038791).\n- Concurrent transaction handling, retries, or partial commits (only explain is in scope; commit semantics handled elsewhere).\n- Schema changes to MutationIntent or audit lineage formats.\n\nRollback: revert the new endpoint/method and restore the unavailable affordance assumption.","id":"axon-f0d728cd","issue_type":"task","labels":["helix","phase:build","kind:implementation","area:policy","area:server","feat-031","prerequisite-of:axon-84038791"],"parent":"axon-e626a2a8","priority":1,"spec-id":"FEAT-031","status":"open","title":"build(feat-031): recursive transaction explain plumbing for policy delta evaluation","updated_at":"2026-05-09T02:30:50.406447146Z"} |
| 431 | +{"acceptance":"AC1. crates/axon-policy (or the policy explain crate) exposes a public function that takes a transaction fixture (list of ops) and returns per-step + aggregate explained outcomes for active and proposed policies.\nAC2. cargo test -p axon-policy passes for the new recursive-explain tests, including chained ops and at least one denied/needs_approval/conflict case per step shape.\nAC3. cargo test --workspace passes; cargo clippy --workspace -- -D warnings passes.\nAC4. The GraphQL or REST surface (whichever the impact matrix calls) exposes the new explained-transaction result; integration test in axon-server verifies the wire shape.\nAC5. Documented in docs/helix/01-frame/features/FEAT-031-*.md (or appended to it) with a one-paragraph note linking to the new public function.","closing_commit_sha":"2eb1864ec650b0b6f89278192e3413b968981413","created_at":"2026-05-09T02:30:50.406447146Z","description":"PROBLEM: The policy impact matrix at ui/src/routes/tenants/[tenant]/databases/[database]/policies/+page.svelte:1152, 1315-1320 renders a \"transaction delta unavailable\" affordance for transaction-row fixtures because the backend cannot explain transaction (multi-operation) flows. axon-ff92fed7 deliberately scoped this out and pointed to axon-84038791 as the follow-up; axon-84038791 cannot proceed without this backend prerequisite.\n\nCURRENT STATE:\n- Single-operation policy explain works (read|create|update|patch|delete fixture rows are evaluated for active and proposed policies).\n- No recursive transaction explain exists in the Rust crates: `grep -r \"transaction_explain\\|TransactionExplain\\|recursive.*explain\" crates/` returns no matches.\n- The UI surface that would consume the result is the impact matrix; the policy authoring page already accepts a transaction fixture textarea (policy-authoring.spec.ts:214 dry-run picker) but has no per-step explained-outcome rendering.\n\nPROPOSED FIX: Add a backend API (likely a GraphQL query or the existing policy-explain endpoint extended) that takes a transaction fixture (an ordered list of operations + subject snapshots) and returns:\n- per-operation explained outcome (allowed | needs_approval | denied | conflict) for both active and proposed policies\n- aggregate transaction outcome\n- redaction list and denied-field diffs per step\n- sufficient detail for the impact matrix to render the same active-vs-proposed delta as for entity rows\n\nImplementation lives in crates/axon-policy (or wherever policy explain is implemented today — verify by `grep -r \"PolicyExplain\\|explain_policy\" crates/`). Add unit tests around the recursion (chained ops where step 2 depends on step 1 result) and a workspace-level integration test.\n\nNON-SCOPE:\n- UI consumption (separate bead — transaction fixture editor + impact matrix transaction-row rendering, see axon-84038791).\n- Concurrent transaction handling, retries, or partial commits (only explain is in scope; commit semantics handled elsewhere).\n- Schema changes to MutationIntent or audit lineage formats.\n\nRollback: revert the new endpoint/method and restore the unavailable affordance assumption.","id":"axon-f0d728cd","issue_type":"task","labels":["helix","phase:build","kind:implementation","area:policy","area:server","feat-031","prerequisite-of:axon-84038791"],"parent":"axon-e626a2a8","priority":1,"spec-id":"FEAT-031","status":"closed","title":"build(feat-031): recursive transaction explain plumbing for policy delta evaluation","updated_at":"2026-05-09T03:49:40.164757213Z"} |
432 | 432 | {"acceptance":"1. GitHub Actions workflow builds for all 4 targets. 2. Binaries are uploaded as release assets. 3. Install script can download from the release.","claimed-at":"2026-04-11T21:45:06Z","claimed-machine":"sindri","claimed-pid":"1857651","created_at":"2026-04-11T19:15:26.070378999Z","dependencies":[{"issue_id":"axon-f1763ba8","depends_on_id":"axon-db1589aa","type":"blocks","created_at":"2026-04-11T19:15:31Z"},{"issue_id":"axon-f1763ba8","depends_on_id":"axon-3c02878d","type":"blocks","created_at":"2026-04-11T19:15:31Z"}],"description":"GitHub Actions workflow for release builds. Targets: linux-amd64, linux-arm64, darwin-amd64, darwin-arm64. Upload binaries as release assets. Use cross or cargo-zigbuild for cross-compilation.","id":"axon-f1763ba8","issue_type":"task","labels":["helix","phase:build","area:infra","feat-028"],"owner":"erik","priority":3,"status":"closed","title":"FEAT-028 Phase F: CI cross-compilation and release workflow","updated_at":"2026-04-11T21:52:08.745570955Z"} |
433 | 433 | {"acceptance":"Contract tests return intent_stale for entity/schema/policy/grant changes with stale dimension details, intent_mismatch for operation hash drift, and authorization failure when the caller no longer has current grants.","claimed-at":"2026-04-23T11:45:49Z","claimed-machine":"sindri","claimed-pid":"949799","created_at":"2026-04-22T12:02:57.132910376Z","dependencies":[{"issue_id":"axon-f187668a","depends_on_id":"axon-30bcdf60","type":"blocks","created_at":"2026-04-22T12:03:24Z"}],"description":"Add commit-time validation for token HMAC, tenant/database, current authorization envelope, subject/grant, schema version, policy version, operation hash, expiry, approval state, and pre-image versions.","execute-loop-heartbeat-at":"2026-04-23T11:45:49.278390571Z","id":"axon-f187668a","issue_type":"task","labels":["helix","phase:build","kind:implementation","area:api","feat-030"],"owner":"erik","parent":"axon-635f86d7","priority":0,"status":"closed","title":"build(feat-030): revalidate bound dimensions before commit","updated_at":"2026-04-23T11:58:23.472825026Z"} |
434 | 434 | {"created_at":"2026-04-05T22:11:42.254999401Z","id":"axon-f3bc1a88","issue_type":"epic","labels":["helix","phase:review","kind:review"],"prior-review":"AR-2026-04-05b","priority":0,"spec-id":"helix.prd","status":"closed","title":"HELIX delta alignment review: 2026-04-05c (post-decisions)","updated_at":"2026-04-05T22:13:05.221602842Z"} |
|
0 commit comments