HivePlane
A release and deployment platform with authentication and regression gating mechanisms. It controls workload rollout through regression reports, promotion workflows, drift detection, and production survival thresholds, emphasizing that gates must actually block problems rather than merely annotate them.
Timeline (last 90 days)
The HivePlane team summarized six types of seams that need to be tracked one by one: binary vs JSON, global keys vs tenant scope, id vs uniqueness, state vs record, foreign keys vs 409, manifest head vs schema head.
The fix for D-5 is to base64-encode the ciphertext when writing to Postgres and decode it when reading back, while the model keeps bytes unchanged.
In defect D-7, the reconcile loader builds desired_specs using id as the primary key; the single-data-source scenario works fine, but when a second data source applies the same desired state, a primary key conflict is triggered.
The fix for D-7 is to use a composite key (source_id, workload_id) with an idempotent upsert, so that the second data source produces a second row instead of a collision.
In defect D-8, the list returned by GET /tools/disabled includes tools that are already enabled, because the endpoint reports the kill-switch record itself rather than the current state.
The fix for D-8 is for the endpoint to report the state derived jointly from the record and the tool's current state, rather than reading the record alone.
In defect D-9, when deleting a workload that contains run records, the interface returns 500, because the raw foreign key violation is thrown as an internal error.
The fix for D-9 is to return 409 with an explanation, because a constraint violation is a user-facing condition, not a server failure.
In defect #573, the backup manifest pinned alembic_head to 0034, while the live schema head was already 0035; the restore operation would succeed but restore to the wrong version.
The fix for #573 is to verify during restore whether the actual schema head matches the manifest, and refuse to execute if they do not match.
12 more timeline events
All Facts (20)
During real-world PostgreSQL field testing, HivePlane v0.2.0 found that the bug was not in the logic, but at the seam where data crosses the persistence boundary.
50%UnverifiedThe HivePlane team recorded a defect ledger containing D-1 through D-11, of which five typical defects cover six types of seams.
50%UnverifiedThe HivePlane team summarized six types of seams that need to be tracked one by one: binary vs JSON, global keys vs tenant scope, id vs uniqueness, state vs record, foreign keys vs 409, manifest head vs schema head.
50%UnverifiedThe fix for D-5 is to base64-encode the ciphertext when writing to Postgres and decode it when reading back, while the model keeps bytes unchanged.
50%UnverifiedThe fix for #573 is to verify during restore whether the actual schema head matches the manifest, and refuse to execute if they do not match.
50%UnverifiedThe fix for D-7 is to use a composite key (source_id, workload_id) with an idempotent upsert, so that the second data source produces a second row instead of a collision.
50%UnverifiedThe fix for D-9 is to return 409 with an explanation, because a constraint violation is a user-facing condition, not a server failure.
50%UnverifiedThe fix for D-8 is for the endpoint to report the state derived jointly from the record and the tool's current state, rather than reading the record alone.
50%UnverifiedThe v0.2.0 field test demonstrated the promotion gate blocking regressions via replayable diffs (scenario S3), drift auto-quarantine and recovery (S4/S5), and the regression diff API.
50%UnverifiedHivePlane v0.2.0's release flow is: recertify, generate a regression report, promote.
50%UnverifiedIn HivePlane v0.2.0, defect #522 caused recertify_and_promote to still allow promotion when the regression report was blocked=True.
50%UnverifiedIn HivePlane v0.2.0, defect #523's default min_production_runs_survived=50 made the certified state unreachable in a field test that ran only once.
50%UnverifiedIn HivePlane v0.2.0, defect #530 caused the drift detector to compare failure counts across corpus versions, so that a scale-up benchmark automatically quarantined a healthy agent.
50%UnverifiedIn HivePlane v0.2.0, defect #527 caused the regression report to compare against a prior certification in any state, and incomparable baselines masked real regressions.
50%UnverifiedThe fix for #522 is to make recertify_and_promote throw PromotionRefusedError to directly refuse promotion when the regression report is blocked.
50%UnverifiedHivePlane v0.2.0's field test report shows 36/36 passing.
50%UnverifiedHivePlane can be installed via pip install hiveplane==0.2.0.
50%UnverifiedIn defect D-9, when deleting a workload that contains run records, the interface returns 500, because the raw foreign key violation is thrown as an internal error.
50%UnverifiedIn defect D-8, the list returned by GET /tools/disabled includes tools that are already enabled, because the endpoint reports the kill-switch record itself rather than the current state.
50%UnverifiedIn defect #573, the backup manifest pinned alembic_head to 0034, while the live schema head was already 0035; the restore operation would succeed but restore to the wrong version.
50%