Repository navigation
C7: provider-state root as a live_deploy EnsuredHostDirectory member - #11676
Conversation
e727927 to
bf7b89b
Compare
|
The failing check is not from this PR, and the passing check does not cover it either.
What the green All six executed and passed. They also ran and passed on the floor at the earlier head — sent from bright-swift-259 |
|
Review 68784: both findings taken, and the fix is the construction arm rather than a patch to the check. Pushed as Finding 1 — validation standing where construction was available. Agreed, and my own doc-comment stated the root cause, which is the tell. The constraint was decidable and fully modelled, so it is now carried by the model:
Finding 2 — two arms with no discriminating red. Resolved by the same change: those arms no longer exist. What happened to the two refusal witnesses, stated plainly because it departs from my brief. My brief asked for a witness proving absence is refused rather than silently skipped. Under construction that state has no constructor, so such a claim is permanently green and would stand as false coverage — DESIGN §4b: ask whether the RED is authorable before writing the check. I deleted them instead of keeping them for the tally. The replacement reds are structural: deleting the ensure from the preamble, or the member from the roster, reds the claims below. Added two that did not exist before — the spec's derived path equals the instance's own projection (the join that would catch the deploy creating a directory the preflight does not read), and the production preamble carries the ensure (the route, not only the command text). If the operator prefers the brief's literal wording, say so and I will restore the refusal arm. Executed evidence at Neighbours re-run green: One neighbour legitimately went red first and was not quietly renumbered: Still blocked on a defect that is not this PR's: — sent from bright-swift-259 |
|
The one failing check is still the pre-existing main defect, not this PR.
It is still unfixed on the newest main ( The other check, — sent from bright-swift-259 |
|
Review 68824: both findings verified against the head and fixed in 1. The false refusal clause in
2. Unused Re-ran the five witnesses at this head after touching a file they resolve through — all pass: Still blocked on main, not on this PR: — sent from bright-swift-259 |
b165086 to
31977e2
Compare
… the spec live_deploy now creates and reads back the provider-state root, so the dashboard launcher can be deleted without losing that creation silently. DeploymentServiceConfig carries provider_state_root, projected from dashboard_instance_provider_state_root beside the other instance paths it already holds. deployment_provider_state_step is a function of the spec: the emitted ensure rides the apply preamble derived from it, and the read-back DirectoryRoot member derives from the same function, so the created path and the observed path cannot diverge. Absent, duplicated, wrong-owner and not-a-directory have no constructor, so nothing validates them. Nothing is deleted here. The census on deployment_provider_state_step records who creates the root for each instance: srv1_live from this member, the other four still only from the provision plan's DashboardEnsureProviderStateRoot, which stays until a production caller applies their specs. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
f61b663 to
c153cfa
Compare
Main moved 27 commits and edited five of its seven files, so the resolve is content work, not a projection drop. Its only consumer is C8, which is held, so a rebuild would deliver a member nothing consumes at the cost of a full review and CI cycle, and would rot again on the next live_deploy edit. Left open rather than closed so the review history survives for whoever resumes C8. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
# Conflicts: # dag/gunbc/live_deploy/spec.dag # dag/test/claim/live_deploy_unit_emission_oracle_witness_test.dag
…oot too main added approval_broker_service_config, a second DeploymentServiceConfig literal, while this branch added the provider_state_root field; the merge resolved textually and the floor caught the missing field at spec.dag. The broker is a second unit on an instance rather than a sixth instance, so its root is that instance's root from the same projection, and the census records why. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
CONVERGENCE-ONE C7, replacement half (operator ruling 2026-09-19: live_deploy owns provider-state creation as an EnsuredHostDirectory member). Nothing is deleted here. The launcher deletion comes after this lands. There are no wet effects.
What changes
gunbc.live_deploy.spec: newEnsuredDependencyKind::ProviderStateRootDirectory.deployment_provider_state_step(instance)builds the member. Its path comes fromgunbc.roadmap_dashboard_instance dashboard_instance_provider_state_rootand its owner fromgunbc_service_user, the same principal readback compares against. No call-site literals.deployment_steps_apply_orderappends it per instance. It is not a host-leveltarget.ensured_directoriesrow, because the path is an instance fact.deployment_provider_state_standingclassifies a spec as Carried, Absent, Duplicated, WrongOwner or NotADirectory.gunbc.live_deploy.emit:live_deploy_apply_script_forrefuses before emitting anything unless the standing is Carried. That function is the production route:deployment_spec_srv1, thenhost_effect_realize.identity_member_of_stepmaps the member to aDirectoryRoot, so the release plan gates it (CreateRoot or Keep).gunbc.live_deploy.member_observe:root_members_of_stepputs the member in the read-back roster, and presence and owner are read like any root's. It stays Ensured, so retract never tears it down.gunbc.roadmap.roadmap_dashboard_instance: the provision-plan annotation now records the ruled arm and points to the census.Disposition census: who creates the provider-state root after this change
DashboardEnsureProviderStateRootis now redundant for this instance and goes with the launcher deletion.DashboardEnsureProviderStateRoot(sole creator; its spec carries the member but no production caller applies that spec)There are no blank rows. The provision op may be deleted for an instance only once a production caller applies that instance's spec.
Witnesses (
test.claim.live_deploy.provider_state_member_witness_test)apply_step_effectsvia the shared projection) overdeployment_spec_srv1emits the ownedinstall -dfor the model's path and owner.DirectoryRoot{provider root}. Retract's owned identities do not.live_deploy_apply_script_foron the same spec with the member filtered out returns the refusal marker (standing=absent), not a script. A duplicated member is classified as Duplicated.Stated divergence
The directory uses the ensured-directory arm's shared mode (0755), the same mode the provision
mkdirproduces. A tighter credential-root mode would be a ManagedDirectory derivation, which would change what EnsuredHostDirectory means for every kind, so it is out of scope here.🤖 Generated with Claude Code