Dosu LogoDosu Logo
Ask
Join our Discord
Organization avatar
HashHivePublic
EvilBit Labs LLC
DocumentsHashHive
phase-2c-refactor-cleanup
phase-2c-refactor-cleanup
Type
External
Status
Published
Created
Jul 18, 2026
Updated
Jul 18, 2026
Source
docs/v2_rewrite_implementation_plan/phase-2c-refactor-cleanup.md

๐ŸŽฏ CipherSwarm Phase 2 Endpoint Hygiene Sweep#

Skirmish must complete this sweep after all /api/v1/web/* endpoints have been implemented and tested.

This pass is required to clean up minor violations of project-specific coding standards that may not be caught by just ci-check but are essential to long-term quality.


๐Ÿ” Common Skipped Rules to Fix#

โŒ Skipped: Proper SvelteKit Integration#

  • Replace all legacy server-rendered endpoints with SvelteKit JSON API endpoints and Svelte components
  • SvelteKit endpoints must return a valid JSON API response, not a server-rendered template
  • The response fields are unpacked automatically and available as top-level variables in the Svelte component

๐Ÿ“˜ See: sveltekit-guidelines.mdc โ€” SvelteKit endpoints must always use JSON API.


โŒ Skipped: Endpoint Purity#

  • Ensure no database access occurs in endpoint functions (move all DB access to services or crud.py)
  • Use Depends(get_db) only inside service-layer helpers, not in the route body

๐Ÿ“˜ See: service-patterns.mdc โ€” all persistence logic must be kept outside endpoints.


โŒ Skipped: FastAPI Idiomatic Parameter Usage#

  • Remove all usage of request: Request for parameter parsing or user/project extraction
  • Forms should never be parsed from the request body or the form data, each field should be a proper Annotated[Form, ...] parameter
  • Replace with proper Annotated[...] dependencies:
user: Annotated[User, Depends(current_user)]
project: Annotated[Project, Depends(get_current_project)]

๐Ÿ“˜ See: fastapi-guidelines.mdc โ€” context should always use DI, never request-manual parsing.


๐Ÿงผ Style Cleanups#

๐Ÿ”ง getattr vs direct access#

  • Replace getattr(foo, "bar") with foo.bar unless:
    • Field is dynamic
    • There's a fallback value
    • Object may be missing the attribute and is guarded

๐Ÿ”ง Typing + Models#

  • Eliminate dict[str, object] returns
  • Ensure all route input/output is typed with Pydantic v2 models

๐Ÿ”ง Imports#

  • Alphabetize imports within groups (stdlib, third-party, local)
  • Remove any unused imports that snuck back in

๐Ÿ“˜ See: python-style.mdc โ€” use direct access over reflection, and structure imports consistently.


๐Ÿงช Final Checks#

  • Run full just ci-check again
  • Launch just dev and download the openapi.json file to verify the generated schema is correct

โœ… Completion Criteria#

All existing /api/v1/web/* endpoints must conform to:

  • JSON API for any SvelteKit route
  • Service-layer separation for DB logic
  • Proper FastAPI DI for context
  • Clean, direct attribute access
  • Valid OpenAPI schema (Pydantic-typed, no JSON dict hacks)
Documents
.impeccable
0001-agent-enrollment-two-token-exchange
0002-docker-supervision-over-pm2
0003-bind-agent-to-enrollment-token
0004-agent-api-revisable-until-1.0
0005-version-public-api-after-1.0
0006-seaweedfs-over-minio
0007-three-api-surfaces
0008-betterauth-over-handrolled-jwt
0009-postgres-task-store-bullmq-orchestration
0010-schema-first-drizzle-zod
0011-pull-advisory-notify-task-distribution
0012-in-memory-websocket-v1-redis-deferred
0013-route-as-spec-hono-zod-openapi
0014-turborepo-bun-over-nx
0015-append-only-telemetry-timescaledb-rrd
0016-server-fanout-bus
0017-adaptive-task-sizing-lease
0018-real-db-integration-test-lane
0019-campaign-archiving-immutable-lifecycle
155-ac-traceability-matrix
155-task-distribution-assignment-spec
156-ac-traceability-matrix
156-object-storage-file-management-spec
160-login-project-selection-ui
2026-05-25-websocket-realtime-infrastructure-requirements
2026-05-29-dashboard-stats-and-read-endpoint-contract-requirements
2026-05-31-openapi-auto-generation-migration-requirements
2026-06-08-results-analysis-export-ui-requirements
2026-06-19-task-distribution-architecture
2026-06-20-campaign-archiving-requirements
2026-06-30-hash-export-import-search-requirements
227-spa-deep-link-refresh-redirect-spec
94-p0-cracker-binary-management-agent-auto-update
96-keyspace-task-distribution-spec
97-task-preemption-spec
99-attack-complexity-state-machine-spec
AGENTS
AGENTS
AI_POLICY
AI_POLICY
ARCHITECTURE
ARCHITECTURE
Agent_Authentication_&_Authorization
Agent_Heartbeat_&_Error_Handling
Agent_List_&_Detail_UI
Base Model Schema System
BullMQ_Queue_Architecture_&_Redis_Integration
CLAUDE
CONTRIBUTING
CONTRIBUTING
Campaign_Creation_Wizard_UI
Campaign_List_&_Detail_UI
Campaign_Orchestration_API
Code Quality Automation with Husky and Kiro Hooks
Core_Flows__HashHive_User_Journeys
Dashboard_&_Real-Time_Monitoring_UI
Dashboard_Stats_API_Endpoint_(GET__api_v1_dashboard_stats)
Development Workflow and Tooling Integration
ESLint and Formatting Configuration
Epic_Brief__HashHive_-_Modern_Distributed_Password_Cracking_Platform
GOTCHAS
GOTCHAS
Health Check Endpoint Enhancements
Login_&_Project_Selection_UI
MERN_proposal
Mixed Hash Type Detection & Automatic Campaign Splitting (#202)
MongoDB Connection Management
Object_Storage_&_File_Management
Project_Selection_&_User_Authentication_API
README
README
README
README
README
README
Real-Time_Events_&_WebSocket_Infrastructure
Resource_Management_API
Resource_Management_UI
Results_API_&_CSV_Export_(Dashboard_Backend)
Results_Analysis_&_Export_UI
SECURITY
SECURITY
STRATEGY
Task_Distribution_&_Assignment
Tech_Plan__HashHive_Architecture
Testing Strategy for Database and Models
advanced_task_scheduler
agent
agent-resource-protocol
agent-server-collaboration-vision
agent-token-rotation
agent_notes
agent_sync_extensions
agent_v1_contract_violations
allow_hybrid_hash_lists
attack
attack_notes
authentication_cleanup
back-compat-credential-format-migration
barrel-plus-subdir-service-split
brute_force_attack_editor
bullmq-jobid-dedup-requires-eviction
bun-test-mock-module-import-order
campaign_list_view
campaign_notes
campaigns
ci_check.prompt
code_review.prompt
contract-test-mocks-mirror-service-not-schema
copilot-instructions
core_algorithm_implementation_guide
crackable_uploads_plan
dashboard-read-endpoint-contract
dashboard-ux
default_config_suggestions
development
development
feat-agent-list-detail-ui
feat-betterauth-project-selection-rbac
feat-campaign-list-detail-ui
feat-masklist-keyspace
form-submit-payload-null-checks-2026-05-19
full_testing_architecture
getbytext-collision-waitfor-timeout
hard_password_attack_strategies
hash_hive_gap_analysis
health_status_screen
implementation_plan
learned_rules_parser_plan
llmstxt.prompt
markov_autogen_plan
new_dictionary_attack_editor
new_mask_attack_editor
openldap-testcontainer-bootstrap-race
performance_tuning.prompt
phase-1-core-infrastructure
phase-2-api-implementation
phase-2-api-implementation-part-1
phase-2-api-implementation-part-2
phase-2-api-implementation-part-3
phase-2b-resource-management
phase-2c-refactor-cleanup
phase-3-e2e-test-coverage-plan
phase-3-step-1
phase-3-step-2
phase-3-step-3
phase-3-step-4
phase-3-step-5
phase-3-web-ui-foundation
phase-4-containerization-deployment
phase-5-task-distribution
phase-6-monitoring-testing-documentation
playwright-shared-seed-user-last-project-id-flake
playwright-visual-baselines
pre-prod-wire-rename-and-schema-version-bump
previous_password_dictionary_attack_editor
projection-narrows-zrecord-wire-shape
psycopg_migration
radix-roving-focus-preventdefault-breaks-keyboard-nav
reactflow-position-by-array-index-2026-05-19
rule_explanation
salvage_templates
security_hardening.prompt
shadcn-radix-non-destructive-add-on-tailwind-v4
shared-zod-openapi-wire-contract-mirror-2026-05-25
spa_to_ssr
summary
template
test-coverage-plan
testcontainers_minio_support
testing
testing
user_flows_notes
v2-upgrade-overview
v2_agent_api_removal
work_next_task.prompt