Refine AC-0001 spec for implementation readiness#9
Merged
danieldilly merged 1 commit intomainfrom Dec 22, 2025
Merged
Conversation
- Refactor FS-0007 v0 multiplayer spec (749287 lines, 62% reduction) - Add ADR-0006: Input tick targeting & TargetTickFloor semantics - Add ADR-0007: StateDigest algorithm (FNV-1a 64-bit, canonicalization) - Revise ADR-0003: Remove dt_seconds footgun, add tick-driven API - Update ADR-0005: Status ProposedAccepted - Tighten Constitution: DM-0026 (InputSeq u64, ties), INV-0003 (player identity) - Add PlayerId type alias to prevent u8/u64 drift - Add mechanical verification: entity ordering, tick postconditions, replay integrity checks - Fix contradictions: Remove player_id from InputCmdProto, clarify StepInput semantics - Add high-leverage features: build_fingerprint, AppliedInput canonical ordering - Update tooling: Remove redundant Issue section from spec template and linter Closes requirements for implementation-ready v0 multiplayer slice per AC-0001.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Trace Block
Files Changed
Modified (12):
docs/adr/0003-fixed-timestep-simulation.md— Complete revision: removed dt_seconds, added tick-driven APIdocs/adr/0005-v0-networking-architecture.md— Status: Proposed→Accepteddocs/constitution/acceptance-kill.md— Fixed AC-0001.5 clarification wordingdocs/constitution/domain-model.md— Added DM-0025/26/27, tightened DM-0026 (InputSeq u64, tie-breaking)docs/constitution/invariants.md— Updated INV-0003 (player identity), INV-0007 (ordering)docs/constitution/id-catalog.json— Regenerated for new IDsdocs/constitution/id-index-by-tag.md— Regenerateddocs/constitution/id-index.md— Regenerateddocs/networking/v0-parameters.md— Added max_future_ticks=120, input_lead_ticks=1docs/specs/_TEMPLATE.md— Removed redundant Issue sectionscripts/spec_lint.py— Removed "Issue" from REQUIRED_SECTIONSNew (3):
docs/adr/0006-input-tick-targeting.md— TargetTickFloor semantics, InputSeq, input pipelinedocs/adr/0007-state-digest-algorithm-canonical-serialization.md— FNV-1a 64-bit, canonicalization rulesdocs/specs/FS-0007-v0-multiplayer-slice.md— Implementation-ready v0 multiplayer spec (287 lines)Deleted (1):
docs/specs/FS-TBD-v0-multiplayer-slice.md— Replaced by FS-0007Determinism / Simulation Impact
Changes:
advance(tick, step_inputs)with preconditiontick == world.tick()Verification:
Verification
just ci— All checks pass (fmt, lint, test, ids, spec-lint)just ids— Constitution IDs validatedjust spec-lint— FS-0007 spec structure validatedjust ids-genrun, outputs committed (id-catalog.json, id-index.md, id-index-by-tag.md)Risk / Notes
Key architectural decisions formalized:
Constitution tightening:
Spec refactoring rationale:
Follow-ups (not blocking):
Checklist